PL/SQLでストアドプロシージャをバッチ実行の方法
PL/SQLではカーソルとループ構造を使用して、ストアドプロシージャを一括実行できます。以下にサンプルコードを示します。
DECLARE
CURSOR c_procedures IS
SELECT procedure_name
FROM all_procedures
WHERE owner = 'your_schema'; -- 替换为你的数据库用户名
BEGIN
FOR proc IN c_procedures LOOP
EXECUTE IMMEDIATE 'BEGIN ' || proc.procedure_name || '; END;';
END LOOP;
END;
上記のコードでは、まずカーソルc_proceduresを宣言し、すべてのストアドプロシージャ名を照会します。次に、FORループを使用してカーソル結果セットを反復処理し、各ストアドプロシージャに対してEXECUTE IMMEDIATEステートメントを実行し、ストアドプロシージャ名をBEGINとENDの間に結合してストアドプロシージャを実行します。
パラメーターを持たないストアドプロシージャにしかこのサンプルは適用されませんのでご留意ください。パラメーターを持つストアドプロシージャの場合は、EXECUTE IMMEDIATE文のパラメーターの渡し方を適宜修正する必要があります。