この質問は私の前の質問に関連しています。
PROC_YEARLYACTIVELIST2
指定した年にアクティブなすべてのレコードを表示する procedure( ) があります。
の以前の内容を削除しTBLACTIVELISTYEARLY2
、結果を挿入しPROC_YEARLYACTIVELIST2
ます。を実行し、 からすべてのレコードを選択してに入れ、Crystal Report のテーブルを返す
関数を作成しました。
以下はコードの一部です。TBLACTIVELISTYEARLY2
TBLACTIVELISTYEARLY
CURSOR 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
。
テーブルを返す関数でプロシージャを実行する他の方法はありますか?
ありがとう!