欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

在块中调用过程碰到的有关问题

更新时间: 2014-01-05 02:13:47 责任编辑: Author_N1

 

在块中调用过程碰到的问题
定义了过程:proc_xzh_demo,用来提供游标参数传递
用来保存emp的前p_rownum条数据
CREATE OR REPLACE PROCEDURE proc_xzh_demo(
p_rownum IN NUMBER,
p_cursor OUT SYS_REFCURSOR
)
AS
BEGIN
  OPEN p_cursor FOR SELECT *FROM emp WHERE ROWNUM<p_rownum;
END proc_xzh_demo;
/


这里没有问题

然后定义块结构执行该过程:
DECLARE
v_cursor SYS_REFCURSOR;
v_rownum NUMBER:=5;
v_record emp%ROWTYPE;
BEGIN
  CALL proc_xzh_demo(v_rownum,:v_cursor);
  LOOP
    FETCH v_cursor INTO v_record;
    EXIT WHEN v_cursor%NOTFOUND;
  END LOOP;
  CLOSE v_cursor;
END;
/

但是一直报这样的错:
第 6 行出现错误:
ORA-06550: 第 6 行, 第 8 列:
PLS-00103: 出现符号 "PROC_XZH_DEMO"在需要下列之一时:
:= . ( @ % ;
符号 ":=" 被替换为 "PROC_XZH_DEMO" 后继续。
找了大半天的原因都看不出来,有高手能帮我解决一下吗?万分感谢!
--参考方法--
引用:
定义了过程:proc_xzh_demo,用来提供游标参数传递
用来保存emp的前p_rownum条数据
CREATE OR REPLACE PROCEDURE proc_xzh_demo(
p_rownum IN NUMBER,
p_cursor OUT SYS_REFCURSOR
)
AS
BEGIN
  OPEN p_cursor FOR SELECT *FROM emp WHERE ROWNUM<p_rownum;
END proc_xzh_demo;
/


这里没有问题

然后定义块结构执行该过程:
DECLARE
v_cursor SYS_REFCURSOR;
v_rownum NUMBER:=5;
v_record emp%ROWTYPE;
BEGIN
  CALL proc_xzh_demo(v_rownum,:v_cursor);
  LOOP
    FETCH v_cursor INTO v_record;
    EXIT WHEN v_cursor%NOTFOUND;
  END LOOP;
  CLOSE v_cursor;
END;
/

但是一直报这样的错:
第 6 行出现错误:
ORA-06550: 第 6 行, 第 8 列:
PLS-00103: 出现符号 "PROC_XZH_DEMO"在需要下列之一时:
:= . ( @ % ;
符号 ":=" 被替换为 "PROC_XZH_DEMO" 后继续。
找了大半天的原因都看不出来,有高手能帮我解决一下吗?万分感谢!


语法错误:
DECLARE
  V_CURSOR SYS_REFCURSOR;
  V_ROWNUM NUMBER := 5;
  V_RECORD EMP%ROWTYPE;
BEGIN
   PROC_XZH_DEMO(V_ROWNUM, V_CURSOR);
  LOOP
    FETCH V_CURSOR
      INTO V_RECORD;
    EXIT WHEN V_CURSOR%NOTFOUND;
  END LOOP;
  CLOSE V_CURSOR;
END;
/

--参考方法--
匿名块的话,call不需要也行吧
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:13:47
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7235/
本文WWW.DOC100.NET DOC100.NET版权所有。