日期:2014-05-17  浏览次数:20763 次

转义符的问题
PL/SQL里我写了个动态游标语句
v_sqlstr:= 'select   a,bc   from   '||table_name||
                                    '   where   a   like   substr(‘||xx||’,5,2) '

现在有这样一个问题XX,table_name是个字符串变量,比如是1234556,我希望最后的SQL语句是
v_sqlstr:= 'select   a,bc   from   cc   where   a   like   substr( '1234556 ',5,2)这种,那么1234556这旁边的2个单引号怎么弄上去啊?如果加 ' ' '||XX|| ' ' ',结果后来的SQL变成了substr( '||XX|| ',5,2),XX没有被替换掉

------解决方案--------------------
SQL>
SQL> declare
2 table_name varchar2(100) := 'test_table ';
3 xx varchar2(100) := 'ssssdr3w ';
4 v_sqlstr varchar2(100) := 'select a,bc from '||table_name|| ' where a like substr( ' ' ' || xx || ' ' ',5,2) ';
5 begin
6 dbms_output.put_line(v_sqlstr);
7 end;
8 /

select a,bc from test_table where a like substr( 'ssssdr3w ',5,2)

PL/SQL procedure successfully completed