今天在做使用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;