oracle 存储过程中的失误!

今天在做使用ORACEL存储过程的时候,遇到一个最低级的失误!

 错误码:ORA-01008: not all variables bound;

数据库ORACLE 9I;

经过网上查询.才得知,是因为绑定变量在执行语句的时候没有绑定值..-_-!汗呀!

之前的例子如下:

---创建包,声明游标,存储过程.有点像C++里的函数声明^-^!

 CREATE OR REPLACE PACKAGE pkg_test
         AS
           TYPE myrctype IS REF CURSOR;
 
         PROCEDURE  pkg_pro(p_id varchar2, p_rc OUT myrctype);
          END pkg_test;

--- 包体,实现声明的过程.

CREATE OR REPLACE  package  body pkg_test
AS
    
    PROCEDURE pkg_pro(p_id  in varchar2 , p_rc OUT myrctype)
    IS
   
    BEGIN
      OPEN    p_rc  FOR 'select areaid,parentid,areaname,arealevel from area where areaid =:p_id'; -----error
    END pkg_pro;
END pkg_test;

---执行语句体

DECLARE
s1 VARCHAR2(10);
s   VARCHAR2(10) ;
t   VARCHAR2(40);
v   VARCHAR2(1);
cc pkg_test.myrctype ; 
BEGIN 
 pkg_test.pkg_pro('1',cc);
 LOOP
 FETCH cc INTO  s1,s,t,v;
 EXIT WHEN cc%NOTFOUND;
  DBMS_OUTPUT.PUT_LINE(' status'||s1||' are'||s);
 END LOOP;
 CLOSE cc;

END;

 

注:错误地方在---error处

 

改为:OPEN    p_rc  FOR 'select areaid,parentid,areaname,arealevel from area where areaid ='||p_id;

执行OK;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值