嗯,就是因为我加了if才会有的参数不能出现在sql字符串中,才导致执行sql字符串后,出现“缺失关键字”的重大问题。 我的意思是你根据sqlstr中是否含有where来通过if判断进行不同的open。 比如: if instr(sqlstr,':spBegRow')<>=0 then open plistLog for sqlstr using pBegRow,pEndRow; else open plistLog for sqlstr; end if;
嗯,就是因为我加了if才会有的参数不能出现在sql字符串中,才导致执行sql字符串后,出现“缺失关键字”的重大问题。 我的意思是你根据sqlstr中是否含有where来通过if判断进行不同的open。 比如: if instr(sqlstr,':spBegRow')<>=0 then open plistLog for sqlstr using pBegRow,pEndRow; else open plistLog for sqlstr; end if; 那么if的嵌套深度就变成2的乘方了。比如条件有两个,条件1和条件2,那么if只能这么写了if 条件1 then if 条件2 then open plistLog for sqlstr using 条件1,条件2; else open plistLog for sqlstr using 条件1; end if; else if 条件2 then open plistLog for sqlstr using 条件2; else open plistLog for sqlstr; end if; end if;
上面的代码貌似没有后面描述得问题 into和using后面的参数不能动态拼接,后面跟的是多个变量,自然不能放到一个变量里一般来说,select into 后面跟的变量都是固定的。每个查询都有检索的目标,这个目标不确定是件很奇怪的事。如果真有这样的需求,可以用下面的方法来绕过去: 例如 execute immediate 'select a,b,c,d,e from ...' into v_a,v_b,v_c,v_d,v_e; 在某些条件下,只能检索出a,b,c 那么用d,e用null来占位即可 execute immediate 'select a,b,c,null,null from ...' into v_a,v_b,v_c,v_d,v_e;至于using后面的变量,建议只用在固定的条件上。变动的条件,直接将值拼接在语句中。using clause的一个好处是可以使用绑定变量,但是它根据动态语句中的绑定变量标识符来按顺序对号入座,给动态的条件带来很大的麻烦
嗯,就是因为我加了if才会有的参数不能出现在sql字符串中,才导致执行sql字符串后,出现“缺失关键字”的重大问题。
我的意思是你根据sqlstr中是否含有where来通过if判断进行不同的open。
比如:
if instr(sqlstr,':spBegRow')<>=0 then
open plistLog for sqlstr using pBegRow,pEndRow;
else
open plistLog for sqlstr;
end if;
我的意思是你根据sqlstr中是否含有where来通过if判断进行不同的open。
比如:
if instr(sqlstr,':spBegRow')<>=0 then
open plistLog for sqlstr using pBegRow,pEndRow;
else
open plistLog for sqlstr;
end if;
那么if的嵌套深度就变成2的乘方了。比如条件有两个,条件1和条件2,那么if只能这么写了if 条件1 then
if 条件2 then
open plistLog for sqlstr using 条件1,条件2;
else
open plistLog for sqlstr using 条件1;
end if;
else
if 条件2 then
open plistLog for sqlstr using 条件2;
else
open plistLog for sqlstr;
end if;
end if;
into和using后面的参数不能动态拼接,后面跟的是多个变量,自然不能放到一个变量里一般来说,select into 后面跟的变量都是固定的。每个查询都有检索的目标,这个目标不确定是件很奇怪的事。如果真有这样的需求,可以用下面的方法来绕过去:
例如
execute immediate 'select a,b,c,d,e from ...' into v_a,v_b,v_c,v_d,v_e;
在某些条件下,只能检索出a,b,c 那么用d,e用null来占位即可
execute immediate 'select a,b,c,null,null from ...' into v_a,v_b,v_c,v_d,v_e;至于using后面的变量,建议只用在固定的条件上。变动的条件,直接将值拼接在语句中。using clause的一个好处是可以使用绑定变量,但是它根据动态语句中的绑定变量标识符来按顺序对号入座,给动态的条件带来很大的麻烦