SQL> CREATE OR REPLACE PROCEDURE ObtainPartNumberProc( leftobid in VARCHAR2 ) as 2 V_SQLString VARCHAR2( 100 ) ; 3 BEGIN 4 V_SQLString :='SELECT CLASS2,RIGHT,W2ISBORROWED FROM PDMM31A.ASSMSTRC WHERE LEFT='||leftobid||' ; 5 EXECUTE IMMEDIATE V_SQLString; 6 END ObtainPartNumberProc 7 /
警告: 创建的过程带有编译错误。
------解决方案--------------------
SQL code
定义一个动态游标作为返回类型,这样才有意义
CREATE OR REPLACE PROCEDURE ObtainPartNumberProc( leftobid in VARCHAR2,rst out sys_refcursor)
is
V_SQLString VARCHAR2( 1000 ) ;
BEGIN
V_SQLString :='SELECT CLASS2,RIGHT,W2ISBORROWED FROM PDMM31A.ASSMSTRC WHERE LEFT='||leftobid;
open rst for V_SQLString;
END ObtainPartNumberProc;
------解决方案--------------------
从这个来看,你的版本太低,估计是8i之类的。因为从9i开始才有SYS_REFCURSOR这个默认的弱类型. 如果没有可以这么修改: 定义一个包,然后在包中定义类型 CREATE OR REPLACE PACKAGE "TYPES" as type refcursor is ref cursor; end;
CREATE OR REPLACE PROCEDURE obtainpartnumberproc ( leftobid IN VARCHAR2, rst IN OUT refcursor ) 或者也可以通过其它方式。
------解决方案--------------------