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

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

Patricia Arquette
リリース: 2025-01-01 13:36:12
オリジナル
469 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート