之前写了一个返回游标的存储过程,但是当我在尝试使用参数的时候,却又遇到了一个问题,如何使用参数。
我的语句是这样的:
create or replace procedure getcur(itemid varchar2,itemname varchar2,p_rc out sys_refcursor)
is
sqlstr varchar2(500);
begin
sqlstr:='select * from item item_id='||item_id||'itemname='itemname;
open p_rc for sqlstr ;
end getcur;
但是不行,总是报错。
经过一份的折腾,终于试验出来正确的写法
create or replace procedure getcur(itemidb varchar2,itemnameb varchar2,p_rc out sys_refcursor)
as
begin
open p_rc for select * from item where itemname=itemnameb and item_id=itemidb ;
end getcur;
其实那个引号是不要有的,只要把引号去了就可以了。但是变量名不能与字段名相同,我的变量多在最后加了一个b。
修正存储过程游标参数问题
本文介绍了一种解决在Oracle存储过程中使用带参数游标的方法。通过对比错误示例和正确示例,展示了如何避免SQL字符串拼接错误并正确使用参数。关键在于去除不必要的引号,并确保变量名不与字段名冲突。
1235

被折叠的 条评论
为什么被折叠?



