Hi,
a possible workaround follows.
Avoid declaration of record-type in the package, declare record variables directly.
In addition, you shoul use bind variables for NDS, at least it's more readable.
AlesCode:create or replace package PkgTrial as --Type Pkg_Test IS RECORD (vTest Tbltest%Rowtype); vFeld1 VARCHAR2(4000); sPkgcode TblTest.Code%TYPE; End PkgTrial; / Create or replace PROCEDURE ProTestOut(vTestOutStmt OUT Tbltest%Rowtype)as vStmt VARCHAR2(4000); Begin -- use BIND VARIABLE here vStmt := 'SELECT '||PkgTrial.vFeld1||' FROM Tbltest WHERE CODE = :code'; Execute Immediate vStmt into vTestOutStmt USING PkgTrial.sPkgcode; END; / CREATE OR REPLACE PROCEDURE ProTest(sCode VARCHAR2) AS vFeld VARCHAR2(30); vFeld2 VARCHAR2(4000); Cursor CurFeld IS SELECT FeldName FROM TblFieldName WHERE TbName = 'TBLTEST'; MyRec Tbltest%Rowtype; BEGIN PkgTrial.vFeld1:=''; OPEN CurFeld; LOOP FETCH CurFeld INTO vFeld; EXIT WHEN CurFeld%NOTFOUND; IF CurFeld%ROWCOUNT=1 THEN PkgTrial.vFeld1:=PkgTrial.vFeld1||' '||vFeld; ELSE PkgTrial.vFeld1:=PkgTrial.vFeld1||','||vFeld; END IF; END LOOP; CLOSE CurFeld; PkgTrial.sPkgcode:=sCode; ProTestOut(MyRec); End; /




Reply With Quote