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文のパラメーターの渡し方を適宜修正する必要があります。

bannerAds