我正在尝试生成具有一般条件的动态SQL语句。根据某些条件,将在where子句中添加不同的其他条件。
我想做这样的事:
declare
v_sql varchar2(500);
a number;
v_dummy number := 1;
begin
v_sql := 'delete tab_1 where v_dummy = 1 ';
if a = 1
then v_sql := v_sql || ' and col_1 = 1';
else v_sql := v_sql || ' and col_2 = 3';
end if;
execute immediate v_sql;
dbms_output.put_line(v_sql);
end;
引发的错误为:
ORA-00904:“V_假人”:无效标识符
有谁能告诉我如何处理这种情况吗?问题在于第一个条件(v_dummy = 1)的定义,我需要添加它才能将“and”操作数用于第二个条件。
谢谢你,
2条答案
按热度按时间zzzyeukh1#
使用绑定变量:
或者因为它的计算结果为1 = 1,所以可以省略它:
u7up0aaq2#
如果您可能需要多个条件(不在代码中),则可以设置初始条件,只需输入col_1 = col_1。根本不需要伪变量,您可以选择添加更多条件: