oracle 存储过程调用参数的问题,小白求解答
我写的一个存储过程中,一个sql语句需要动态的更新查询条件,这个查询条件就又我调用存储过程的时候当作参数传进来,比如: UF_REPORT_TEMPLATE(aa in VARCHAR2) 我传了一个条件:aa aa传入存储过程中的sql语句:select * from test where 1=1 aa 注:aa的值为 and var>1 然后系统提示:无效的关系运算符
但是sql语句写成:select * from test where 1=1 and var=aa 就正确!
求高手解答:如何把一个条件(如:a>1)当作参数传入存储过程,让sql语句能够调用!谢谢
------解决方案--------------------select * from test where 1=1 and var=aa
你先说明白这个sql如何“正确”的,PL/SQL里面不允许直接写一个sql
如果你把它做游标用,那么open 游标 for '拼接后的SQL字符串'
如果你把它做into用,那么execute immediate '拼接后的SQL字符串' into
------解决方案--------------------支持楼上的,
declare sqlstr varchar2(999),
aa varchar2(40);
begin
aa:=' and var>1'; --var 是你表中的一个字段
sqlstr:='select * from test where 1=1'
------解决方案--------------------aa;
execute immediate sqlstr;
end;