【发布时间】:2018-11-03 17:32:16
【问题描述】:
游标可以动态传递参数吗?
例如:
create or replace procedure getRec
as
cursor get(nameToGet varchar2) is select * from test where name = nameToGet;
rec test%rowtype;
begin
for rec in get('sam') loop
if get%notfound then
dbms_output.put_line('No record found');
else
dbms_output.put_line('Name : ' || ' ' || rec.name ||' ::: ' || 'Address : '
|| rec.address);
end if;
end loop;
end;
但这是硬编码的('nameToGet' 的值)。如何动态地将值传递给游标(如果可能)? 当然,我们可以使用像
这样的参数化过程来做到这一点create or replace procedure getRec(nameToGet IN varchar2)
光标会像
cursor get is select * from test where name = nameToGet;
但我想创建一个参数化游标并将值动态传递给游标。
另一方面,当找不到记录时,dbms_output('record not found') 也不会执行。任何人都可以纠正代码吗?
【问题讨论】:
-
我对PLSQL有点生疏,但我认为获取下一条记录的命令是
FETCH,而不是GET。至于传递 VALUE,您的问题表明您想要完全按照您展示的方式进行操作。试着改写一下,这样更清楚。 -
@FDavidov 'get' 这里是光标的名称。 Fetch 是一个关键字,用于从游标中获取值到声明的变量中。
-
嗯,这超出了我的记忆。如前所述,我生锈了。抱歉,我不能提供更多帮助。
-
没问题...plsql很简单,但问题是当我们失去联系时,它真的很难回忆...
标签: sql plsql oracle11g plsqldeveloper