この質問は私の前の質問に関連しています。
PROC_YEARLYACTIVELIST2指定した年にアクティブなすべてのレコードを表示する procedure( ) があります。
の以前の内容を削除しTBLACTIVELISTYEARLY2、結果を挿入しPROC_YEARLYACTIVELIST2ます。を実行し、 からすべてのレコードを選択してに入れ、Crystal Report のテーブルを返す
関数を作成しました。
以下はコードの一部です。TBLACTIVELISTYEARLY2TBLACTIVELISTYEARLYCURSOR C_IH
宣言する
CURSOR C_IH IS SELECT * FROM tblActiveListYearly2;
ctr INT;
私は番号です。
currDeploymentComputer COL_TYPE_DEPLOYMENT_COMPUTER := COL_TYPE_DEPLOYMENT_COMPUTER NULL);
R_IH C_IH%ROWTYPE;
始める
PROC_YEARLYACTIVELIST2(in_year);
OPEN C_IH;
私:= 0;
ループ (....)
関数を次のように呼び出そうとしました
SELECT GETDEPLOYMENT_COMPUTER('2012') from dual;
そして、ORA-14551エラーがあります
ORA-14551: cannot perform a DML operation inside a query
ORA-06512: at "NPLS.PROC_YEARLYACTIVELIST2", line 12
ORA-06512: at "NPLS.GETDEPLOYMENT_COMPUTER", line 3
それを検索したところ、INSERT、UPDATEまたはDELETEとの競合が原因であることがわかりましたDUAL。
テーブルを返す関数でプロシージャを実行する他の方法はありますか?
ありがとう!