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没有被替换掉
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没有被替换掉
' where a like substr('''||xx||''',5,2)'
substr(chr(39)||XX||chr(39),5,2)
sqlstr:='select a,bc from '||table_name||' where a like substr('''||xx||''',5,2)';
这样会有问题?
sqlstr:='select a,bc from '||table_name||' where a like substr('''||xx||''',5,2)';
会,比如 table_name=mytab,xx='123456',最后你execute immediate v_sqlstr;你会很郁闷的发现,执行的语句如下:
select a,bc from mytab where a like substr('||xx||',5,2)';试验下就知道了
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