比如我想要一个这样的字符串:
'select * from test where sj>='2009-04-1' and sj<='2009-5-1' '
然我们申请的变量是这样的:
declare
str1 varchar2(100):='2009-04-1' ;
str2 varchar2(100):='2009-5-1' ;
sqlstr varchar2(100):=' select * from test ';
begin
sqlstr:=sqlstr ||'where sj>='|| str1 ||' and sj<='||str2;
Dbms_Output.put_line(sqlstr);
end;
结果却是:
select * from test where sj>=2009-04-1 and sj<=2009-5-1
这是条错误语句 不能够执行;
想一下原因很明白 我的单引号 不见了!
我于是改为:
sqlstr:=sqlstr ||' where sj>='||''''|| str1||''''||' and sj<='||''''||str2||'''';
得到我想要的结果:
select * from test where sj>='2009-04-1' and sj<='2009-5-1';
其中的奥秘 大家自已体会! 我为此郁闷一天啦!!