1. 使用动态SQL时发现的问题,
在字符串中还要使用单引号怎么办呢,使用转义字符,转义字符正是单引号本身
declare
v_nyr varchar2(8);
v_yydm varchar2(16);
v_sql varchar2(200);
v_cur number;
cursor v_cursor is
select distinct nyr,yydm from v_nyr_yydm_test;
begin
open v_cursor;
loop
fetch v_cursor into v_nyr,v_yydm;
exit when v_cursor%notfound;
v_sql:=||v_nyr||||v_yydm||
||v_nyr||'
and yydm= with read only';
v_cur:=dbms_sql.open_cursor;
dbms_output.put_line(v_sql);
dbms_sql.parse(v_cur,v_sql,dbms_sql.native);
dbms_sql.close_cursor(v_cur);
end loop;
close v_cursor;
end;
2. 使用转义字符使用escape
在Oracle中字符_表示匹配单字符,如下若需要删除所有V_2_开头的视图,则需要对_进行转义。使用escape
select view_name from user_views
where view_name like escape ;