パッケージ内の運転手続きから複数の手続きを呼び出そうとしています。ルックアップテーブルから特定の値を検出した場合、特定のプロシージャを呼び出して、そのルックアップテーブル内の後続のすべての値について後続のプロシージャを呼び出し続けるようなロジックです。問題は、私のコードが無限ループに入ることです。誰もがこれで私を助けることができますか?PLSQLコードのifブロックからプロシージャを繰り返し呼び出す方法はありますか?
PROCEDURE TEST(
a_archiveDays_in IN NUMBER,
a_amountInstancesToCommit_in IN NUMBER,
a_result_out OUT INTEGER,
a_resultException_out OUT VARCHAR,
stage_val OUT NUMBER)
IS
i NUMBER :=0;
BEGIN
FOR rec IN (SELECT stage FROM completion_status WHERE status_id IS NOT NULL)
LOOP
i := i+1;
IF rec.stage =1 THEN
DBMS_output.put_line('Starting Shipment Data population');
/*populate_shipment_data(a_archiveDays_in ,
a_resultException_out , a_result_out);*/
ELSIF rec.stage = 2 THEN
DBMS_output.put_line('Starting Document data population');
/* populate_document_data(a_archiveDays_in,
a_resultException_out , a_result_out);*/
ELSIF rec.stage =3 THEN
DBMS_output.put_line('Starting Shipment Archiving');
shipment_archive (a_archiveDays_in,a_amountInstancesToCommit_in,a_result_out,a_resultException_out);
ELSIF rec.stage =4 THEN
DBMS_output.put_line('Starting shipment Master deletion');
shipment_mast_del (a_archiveDays_in,a_amountInstancesToCommit_in,a_result_out ,a_resultException_out);
elsif rec.stage =5 THEN
DBMS_output.put_line('Starting Document Archiving');
document_archive(a_archiveDays_in,a_amountInstancesToCommit_in,a_result_out ,a_resultException_out);
elsif rec.stage =0 THEN
DBMS_output.put_line('Archival Completed...');
END IF;
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_output.put_line('Check Log Table for more info');
WHEN too_many_rows THEN
DBMS_output.put_line('Not Allowed');
WHEN OTHERS THEN
DBMS_output.put_line('Check');
a_result_out := SQLCODE;
a_resultException_out := SUBSTR(SQLERRM, 1, 3000);
END TEST;
/
は非常に低い1は助けることができるit'sあなた – SomeJavaGuy
無限ループと呼び出し手順はまったく関連していません。他にもいくつかのコードを表示する必要があります。 –
こんにちは、私はこの場所に新しいです。 コードはどこにアップロードしますか?: –