oracle执行存储过程问题

createorreplaceproceduremymdm.shujvtest(idininnumber,numinnumber,resultsoutsys_refcur... create or replace procedure mymdm.shujvtest(idin in number,num in number,results out sys_refcursor) as
id number;
con varchar2(20);
addid number;
begin
select nvl(max(id),0)+1 into id from mymdm.shujv_test;
addid:=1;
while addid<=idin loop
while nvl(length(con),0)<num loop
con:=con||chr(ceil(dbms_random.value(20,126)));
end loop;
insert into mymdm.shujv_test values(id,con);
id:=id+1;
addid:=addid+1;
con:=null;
end loop;
commit;
open results for select * from mymdm.shujv_test where rownum<=20;
end;
这是我的存储过程源码,然后我去调用存储过程

第一种:
SQL> exec shujvtest(10000,20,results);

begin shujvtest(10000,20,results); end;

ORA-06550: line 2, column 26:
PLS-00201: identifier 'RESULTS' must be declared
ORA-06550: line 2, column 7:
PL/SQL: Statement ignored

第二种:
SQL> exec shujvtest(10000,20);

begin shujvtest(10000,20); end;

ORA-06550: line 2, column 7:
PLS-00306: wrong number or types of arguments in call to 'SHUJVTEST'
ORA-06550: line 2, column 7:
PL/SQL: Statement ignored

问一下存储过程调用不是这样的么,为什么报错啊
展开
 我来答
殇忄路
2014-09-29 · TA获得超过560个赞
知道小有建树答主
回答量:478
采纳率:81%
帮助的人:325万
展开全部
因为你有out参数,out参数需要先声明
你先改改吧,改不了再问,这样深刻点
TableDI
2024-07-18 广告
在Excel中,使用`VLOOKUP`函数进行单一条件查找非常常见,但`VLOOKUP`本身并不直接支持双重条件。然而,你可以通过一些间接方法实现。一种方法是将两个条件合并为一个标识符(例如,通过连接或串联),然后在另一个区域中查找此标识符... 点击进入详情页
本回答由TableDI提供
带妞流浪
2014-09-29
知道答主
回答量:12
采纳率:0%
帮助的人:2.9万
展开全部
输出参数需要定义。
declare
results sys_refcursor;
begin
hujvtest(10000,20,results);
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
云中呵
2014-09-29 · 超过28用户采纳过TA的回答
知道答主
回答量:125
采纳率:100%
帮助的人:62.1万
展开全部
SQL> exec shujvtest(10000,20,results); 中的results 要先声明为 你定义的游标才能用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式