私はループのためにselect文を渡しているストアドプロシージャを作成しようとしていると私は、実行時に渡すと、エラーの下になっている動的テーブルを使用しています:GettigエラーPLS-00364
私が使用してプロシージャを呼び出すLINE 23 PLS-00364: loop index variable 'I' use is invalid
LINE 19 PL/SQL: ORA-00942: table or view does not exist
CREATE OR REPLACE PROCEDURE CREATE_TEST(TBL_NM IN VARCHAR2)
IS
SRC_ID NUMBER(38);
SQL_Q VARCHAR2(250);
DEL_F VARCHAR2(250);
BEGIN
FOR I in (SELECT DEL_IND FROM TBL_NM)
LOOP
SRC_ID := SRC_FILE_ID_SEQ.NEXTVAL;
IF I.DEL_IND = 0
THEN
execute immediate 'INSERT INTO TEST_HIST ' || ' (a,b,c,d,e,DEL_IND) ' ||
' SELECT a,b,c,d,e, '|| 0 || ' || ' FROM ' || TBL_NM;
ELSIF I.DEL_IND = 1
THEN
execute immediate 'INSERT INTO JESTX_IGNR ' || ' (a,b,c,d,e,DEL_IND,SRC_ID_NO) ' ||
' SELECT a,b,c,d,e, '|| 2 ||' , '|| SRC_ID || ' FROM ' || TBL_NM;
END IF ;
END LOOP;
COMMIT;
END;
:あなたは動的SQLを使用したループのカーソルを使用することはできませんよう
EXEC CREATE_TEST('abc');
の下
試し秒が間違っすぎるので、あなたは、それが見えるようにしたいのかわからない - あなたをはい... –
値が多すぎ2番目のインサートは定義された列よりも多くの値を持っています。 – cableload