日期:2014-05-17  浏览次数:20853 次

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;