ホームページ  >  記事  >  データベース  >  Oracle 出力パラメータ ストアド プロシージャについて話しましょう

Oracle 出力パラメータ ストアド プロシージャについて話しましょう

PHPz
PHPzオリジナル
2023-04-04 09:11:361532ブラウズ

Oracle データベースでは、ストアド プロシージャは、必要に応じてストアド プロシージャを呼び出すことで定義された操作を実行できるプリコンパイルされたコード ブロックです。ストアド プロシージャでは、SQL ステートメントの実行に加えて、入力、出力、またはその両方のパラメータを定義することもできます。この記事では主に、ストアド プロシージャでの出力パラメーターとその応用について紹介します。

1. 出力パラメーターの概念

ストアド プロシージャでは、出力パラメーターはストアド プロシージャから結果を返すために使用される変数であり、通常は基本データ型とカスタム データ型が含まれます。ストアド プロシージャが実行されると、返された結果は出力パラメータに保存され、プログラムは接続オブジェクトを通じて出力パラメータにアクセスし、返されたデータを後続の操作に使用できます。

2. 出力パラメーターを使用してストアド プロシージャを作成する

Oracle データベースでは、出力パラメーターを使用してストアド プロシージャを作成するには、CREATE PROCEDURE コマンドを使用する必要があります。次に例を示します:

CREATE OR REPLACE PROCEDURE p_test_out_param(
   p_in_param NUMBER,
   p_out_param OUT VARCHAR2
) AS
BEGIN
   p_out_param := 'Hello World';
   dbms_output.put_line('IN Parameter value = ' || p_in_param);
   dbms_output.put_line('OUT Parameter value = ' || p_out_param);
END;

上記の例では、p_in_param が入力パラメータ、p_out_param が出力パラメータ、タイプは VARCHAR2 です。このストアド プロシージャは SQL ステートメントを実行せず、p_out_param の文字列を出力するだけです。ストアド プロシージャの最後で、p_out_param の値を取得し、外部から呼び出されたプログラムによって処理できます。

3. 外部プログラムはストアド プロシージャの出力パラメータにアクセスします

Oracle データベースでは、外部プログラムは接続オブジェクトを使用してストアド プロシージャの出力パラメータにアクセスできます。 Java プログラムの例を次に示します。

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class CallStoredProcedure {
   public static void main(String args[]) {
      Connection conn = null;
      CallableStatement cstmt = null;
      try {
         Class.forName("oracle.jdbc.driver.OracleDriver");
         conn = DriverManager.getConnection(
            "jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");

         cstmt = conn.prepareCall("{call p_test_out_param(?, ?)}");
         cstmt.setInt(1, 100);
         cstmt.registerOutParameter(2, java.sql.Types.VARCHAR);
         cstmt.executeUpdate();

         String output = cstmt.getString(2);
         System.out.println("Output Parameter : " + output);

      } catch (SQLException e) {
         e.printStackTrace();
      } catch (ClassNotFoundException e) {
         e.printStackTrace();
      } finally {
         try {
            if (cstmt != null)
               cstmt.close();
            if (conn != null)
               conn.close();
         } catch (SQLException e) {
            e.printStackTrace();
         }
      }
   }
}

このプログラムは Java 言語で書かれており、JDBC ドライバーを通じて Oracle データベースに接続し、ストアド プロシージャ p_test_out_param を実行します。 registerOutParameter メソッドで出力パラメータの型が VARCHAR であることをプログラムに伝え、実行後に getString メソッドで出力パラメータの値を取得します。

概要:

Oracle データベースでは、ストアド プロシージャはビジネス ロジックを処理する重要な手段です。出力パラメータを使用すると、ストアド プロシージャによって返された結果をプログラムが容易に取得できます。次の 3 つの部分を通じて、Oracle データベースはほとんどすべての主流のプログラミング言語接続 API をサポートしているため、プログラマはデータベース操作を実行するために得意なプログラミング言語を選択できることがわかります。同時に、Oracle データベースは強力なストアド プロシージャ機能を提供し、複雑なビジネス環境におけるビジネス ロジックの保守性とパフォーマンスを向上させることができます。

以上がOracle 出力パラメータ ストアド プロシージャについて話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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