ホームページ >データベース >mysql チュートリアル >Oracle で 1 つのストアド プロシージャを別のストアド プロシージャから呼び出す方法

Oracle で 1 つのストアド プロシージャを別のストアド プロシージャから呼び出す方法

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-01 13:36:12462ブラウズ

How to Call One Stored Procedure from Another in Oracle?

Oracle の他のストアド プロシージャ内でストアド プロシージャを実行する方法

概要:

呼び出し別のストアド プロシージャ内からストアド プロシージャを作成することは、Oracle の貴重な技術であり、開発者は次のことを可能にします。複雑なシナリオ向けのデイジーチェーン データベース操作。

解決策:

別のストアド プロシージャ内でストアド プロシージャを呼び出すには、次のいずれかの方法を使用します。

1. CALL ステートメント:

CALL <procedure_name>([arguments]);

このメソッドは SQL キーワード CALL を使用し、引数のないプロシージャの場合でもかっこが必要です。

例:

CALL test_sp_1();

2.匿名 PL/SQL ブロック:

BEGIN
  <procedure_name>([arguments]);
END;

PL/SQL ブロックでは、プロシージャを直接呼び出すことができます。

例:

BEGIN
  test_sp_1;
END;

3. EXEC コマンド (SQL*Plus のみ):

EXEC <procedure_name>([arguments]);

このコマンドは、匿名 PL/SQL ブロックのショートカットです。

追加の考慮事項:

  • 呼び出されたプロシージャが存在し、必要なプロシージャが存在することを確認してください。
  • 引数が渡される場合、そのデータ型は呼び出されるプロシージャで指定されたものと一致する必要があります。
  • プロシージャの実行中に発生したエラーは、呼び出し元のプロシージャに伝播されます。

例コード:

SET SERVEROUTPUT ON;

CREATE OR REPLACE PROCEDURE test_sp AS
BEGIN
    DBMS_OUTPUT.PUT_LINE('Test works');
END;

CREATE OR REPLACE PROCEDURE test_sp_1 AS
BEGIN
    DBMS_OUTPUT.PUT_LINE('Testing');
    test_sp;
END;

CALL test_sp_1();

出力:

Testing
Test works

以上がOracle で 1 つのストアド プロシージャを別のストアド プロシージャから呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。