oracle 动态sql查询语句中含有表中字段时的单引号有关问题

oracle 动态sql查询语句中含有表中字段时的单引号问题
例如:
要查询数据库中含有字段名为ID的所有表名,采用动态sql语句时,如何处理单引号问题呢?

 ref_cursor :='select table_name from all_tab_columns where column_name ='ID'';


上面的这句报错,该怎么改,谢谢!

  --打开游标
  open usrs for ref_cursor  ;
------解决方案--------------------
引用:
例如:
要查询数据库中含有字段名为ID的所有表名,采用动态sql语句时,如何处理单引号问题呢?

 ref_cursor :='select table_name from all_tab_columns where column_name ='ID'';


上面的这句报错,该怎么改,谢谢!

  --打开游标
  open usrs for ref_cursor  ;


ref_cursor :='select table_name from all_tab_columns where column_name =''ID'''
------解决方案--------------------
单引号在SQL语言中是敏感字符的,需要转义,类似于编程语言中的反斜杠(\),而SQL中的转义字符为单引号(‘),所以写法如楼上。
------解决方案--------------------
楼主的sql中如果需要处理单引号的地方比较多的话,在10g后可以这样写
ref_cursor :='select table_name from all_tab_columns where column_name =q'('ID')';