検索
ホームページデータベースOracleOracle でストアド プロシージャを作成および実行する方法の例

Oracle は、多くの高度な機能を備えた非常に強力なデータベース管理システムであり、ストアド プロシージャもその 1 つです。ストアド プロシージャは、後で呼び出して使用できるようにデータベースに保存できる、データベース操作用の事前定義された SQL ステートメントのセットです。

Oracle では、ストアド プロシージャは、SQL とプログラミングを組み合わせた言語である PL/SQL で記述されます。 PL/SQL は強力なデータ操作機能とプロセス制御機能を備えており、効率的なストアド プロシージャを簡単に作成できます。

ストアド プロシージャの利点

ストアド プロシージャの主な利点は、データベースの実行効率を高め、ネットワーク通信のオーバーヘッドを削減できることです。ストアド プロシージャは事前にコンパイルおよび最適化されているため、実行中に繰り返し解析および最適化する必要がなく、実行のために直接呼び出すことができます。さらに、ストアド プロシージャはパラメータを通じて動的操作を実装することもできるため、コードが簡素化されるだけでなく、SQL インジェクションなどのリスクも回避されます。

ストアド プロシージャの作成と実行

次に、Oracle でストアド プロシージャを作成および実行する方法について説明します。

ストアド プロシージャを作成する

Oracle では、CREATE PROCEDURE ステートメントを使用してストアド プロシージャを作成する必要があります。構文は次のとおりです:

CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter_name [IN | OUT | IN OUT] parameter_type [, ...])]
[IS | AS]
BEGIN
      pl/sql_code_block;
END [procedure_name];

その中には:

  • CREATE PROCEDURE: ストアド プロシージャを作成するステートメント。
  • OR REPLACE: オプションのパラメーター。このパラメーターを指定すると、作成されたストアド プロシージャが既に存在する場合は置き換えられることを意味します。
  • procedure_name: ストアド プロシージャの名前。
  • parameter_name: ストアド プロシージャの入力と出力を指定するために使用されるオプションの入力パラメータまたは出力パラメータ。
  • parameter_type: パラメーターのタイプ。VARCHAR2、NUMBER などのデータ型、または SYS_REFCURSOR などのカーソル タイプを指定できます。
  • IS | AS: ストアド プロシージャの言語タイプを指定するために使用されるオプションのパラメータ。IS は開始 (PL/SQL ブロック) を表し、AS は終了 (PL/SQL ブロック) を表します。
  • pl/sql_code_block: PL/SQL コード ブロック。ストアド プロシージャの特定のロジック実装が含まれます。

次のコード例は、2 つのパラメーターを受け入れ、その合計を出力する単純なストアド プロシージャを作成する方法を示しています。

CREATE OR REPLACE PROCEDURE add_nums(
    num1 IN NUMBER,
    num2 IN NUMBER,
    sum OUT NUMBER
)
IS
BEGIN
    sum := num1 + num2;
END add_nums;

ストアド プロシージャを実行します。

In In Oracle 、ストアド プロシージャを実行するには、EXECUTE または EXECUTE IMMEDIATE ステートメントが必要です。たとえば、上記のサンプル プログラムを実行するには、次のステートメントを使用できます。

DECLARE
    result NUMBER;
BEGIN
    add_nums(10, 20, result);
    DBMS_OUTPUT.PUT_LINE('The sum is: ' || result);
END;

ここでは、DECLARE ステートメントを使用して、使用する必要がある変数結果を宣言し、add_nums ストアド プロシージャを呼び出して出力します。結果を画面に表示します。

パラメータ タイプ

ストアド プロシージャでは、パラメータは入力パラメータ、出力パラメータ、または双方向パラメータです。

  • 入力パラメータ: ストアド プロシージャの入力を指定します。
  • 出力パラメーター: ストアド プロシージャの出力を指定します。
  • 双方向パラメータ: 入力または出力可能。

パラメータの型を宣言する方法は次のとおりです:

(param_name [IN | OUT | IN OUT] param_type [, ...])

この宣言では、[IN | OUT | IN OUT] はオプションのパラメータであり、パラメータの型を指定するために使用されます。パラメータ。パラメータのタイプが指定されていない場合は、デフォルトで IN タイプ、つまり入力パラメータが使用されます。

サンプル コード:

CREATE OR REPLACE PROCEDURE my_proc (
    num IN NUMBER,
    str IN OUT VARCHAR2,
    cur OUT SYS_REFCURSOR
)
IS
BEGIN
    -- 逻辑实现
END my_proc;

上記のコードでは、3 つのパラメーターを含むストアド プロシージャ my_proc を宣言します。最初のパラメーター num は入力パラメーターで、2 番目のパラメーター str は双方向です。パラメーター、 3 番目のパラメーター cur は出力パラメーターです。

レコード セットの処理

ストアド プロシージャを使用してデータを操作する場合、多くの場合、クエリ結果のリストを返す必要があります。 Oracle は、カーソルと PL/SQL テーブルの 2 種類のレコードセットを提供します。

カーソル

カーソルは、クエリ結果を横断できる結果セットを返すデータ構造です。カーソルは明示的または暗黙的です。明示的カーソルでは、コード内でカーソル変数を宣言し、開いたり閉じたりする必要があります。暗黙的カーソルは、Oracle によって自動的に作成および管理されます。

これは、カーソルの使用方法を示すストアド プロシージャです:

CREATE OR REPLACE PROCEDURE get_employee(
    id_list IN VARCHAR2,
    emp_cur OUT SYS_REFCURSOR
)
IS
BEGIN
    OPEN emp_cur FOR 'SELECT * FROM employees WHERE id IN (' || id_list || ')';
END get_employee;

この例では、従業員のカンマ区切りリストを受け入れる 2 つのパラメータを指定してストアド プロシージャ get_employee を宣言します。 ID リストが入力パラメータとして使用され、選択された従業員情報を含むカーソル emp_cur が返されます。

PL/SQL テーブル

PL/SQL テーブルは、一連の値を格納できる配列のようなデータ構造です。 PL/SQL 表には、一連のデータをストアド・プロシージャに渡すなど、ストアド・プロシージャ内で多くの実用的な用途があります。

Oracle では、次のコードのように、ストアド プロシージャで PL/SQL テーブルを宣言して使用できます。

CREATE OR REPLACE PACKAGE my_package
IS
    TYPE num_list IS TABLE OF NUMBER INDEX BY PLS_INTEGER;

    PROCEDURE sum_nums(nums IN num_list, sum OUT NUMBER);
END my_package;

CREATE OR REPLACE PACKAGE BODY my_package
IS
    PROCEDURE sum_nums(nums IN num_list, sum OUT NUMBER)
    IS
        total NUMBER := 0;
    BEGIN
        FOR indx IN 1 .. nums.COUNT LOOP
            total := total + nums(indx);
        END LOOP;
        sum := total;
    END sum_nums;
END my_package;

ここでは、PL/SQL を宣言する my_package という名前のパッケージを作成します。 num_list という名前のテーブル型と、その型を使用するストアド プロシージャ sum_nums です。 sum_nums は、num_list 型の引数を受け取り、それらの合計を計算します。

結論

Oracle では、ストアド プロシージャはデータベースを保守するための重要なツールの 1 つであり、効率的な実行機能とダイナミクスを備えています。また、ストアド プロシージャを使用すると、単一の SQL ステートメントを実行するだけでなく、いくつかのビジネス ロジックを実行できるため、再利用性と保守性が向上します。データベースに保存して共有し、複数のアプリケーションやプロセスからアクセスできるためです。ストアド プロシージャを使用することには多くのメリットがあり、短い記事ですべてを説明することは困難ですが、深く理解し、適用することができれば、実際の業務で大きなメリットが得られると考えています。

以上がOracle でストアド プロシージャを作成および実行する方法の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Oracleのコア機能:データベースソリューションの提供Oracleのコア機能:データベースソリューションの提供Apr 25, 2025 am 12:06 AM

Oracle Databaseは、データセキュリティと高可用性を提供するためにSQLおよびオブジェクトリレーショナルモデルをサポートするリレーショナルデータベース管理システムです。 1. Oracleデータベースのコア関数には、データストレージ、検索、セキュリティ、バックアップ、リカバリが含まれます。 2。その作業原則には、多層貯蔵構造、MVCCメカニズム、およびオプティマイザーが含まれます。 3.基本的な使用には、テーブルの作成、データの挿入、クエリが含まれます。高度な使用には、ストアドプロシージャとトリガーが含まれます。 4.パフォーマンス最適化戦略には、インデックスの使用、最適化されたSQLステートメント、およびメモリ管理が含まれます。

Oracleソフトウェアの使用:データベース管理などOracleソフトウェアの使用:データベース管理などApr 24, 2025 am 12:18 AM

データベース管理に加えて、OracleソフトウェアはJavaeeアプリケーション、データグリッド、高性能コンピューティングでも使用されています。 1. OracleWeblogicserverは、Javaeeアプリケーションの展開と管理に使用されます。 2。OracleCoherenceは、高性能データストレージとキャッシュサービスを提供します。 3. OracleExadataは、高性能コンピューティングに使用されます。これらのツールにより、OracleはエンタープライズITアーキテクチャでより多様な役割を果たすことができます。

ビジネスの世界におけるオラクルの役割ビジネスの世界におけるオラクルの役割Apr 23, 2025 am 12:01 AM

Oracleはデータベース会社だけでなく、クラウドコンピューティングとERPシステムのリーダーでもあります。 1。Oracleは、データベースからクラウドサービスおよびERPシステムへの包括的なソリューションを提供します。 2。Oraclecloudは、AWSとAzureに挑戦し、IAAS、PAAS、SAASサービスを提供します。 3. e-businesssuiteやfusionApplicationsなどのOracleのERPシステムは、企業がオペレーションを最適化するのに役立ちます。

Oracle Software in Action:実際の例Oracle Software in Action:実際の例Apr 22, 2025 am 12:12 AM

現実世界のOracleソフトウェアアプリケーションには、eコマースプラットフォームと製造が含まれます。 1)eコマースプラットフォームでは、OracLedatabaseを使用してユーザー情報を保存および照会します。 2)製造では、Oraclee-BusinessSuiteを使用して、在庫と生産計画を最適化します。

Oracleソフトウェア:アプリケーションと業界Oracleソフトウェア:アプリケーションと業界Apr 21, 2025 am 12:01 AM

Oracleソフトウェアが複数のフィールドに輝く理由は、その強力なアプリケーションとカスタマイズされたソリューションです。 1)Oracleは、データベース管理からERP、CRM、SCM、2)包括的なソリューションを提供します。そのソリューションは、金融、医療、製造などの業界特性に従ってカスタマイズできます。

MySQLとOracleの選択:意思決定ガイドMySQLとOracleの選択:意思決定ガイドApr 20, 2025 am 12:02 AM

MySQLまたはOracleの選択は、プロジェクトの要件に依存します。1。MySQLは、オープンソース、無料、使いやすさのため、中小規模のアプリケーションやインターネットプロジェクトに適しています。 2。Oracleは、その強力で安定した高度な機能のため、大企業のコアビジネスシステムに適していますが、高コストです。

Oracleの製品:深いダイビングOracleの製品:深いダイビングApr 19, 2025 am 12:14 AM

Oracleの製品エコシステムには、データベース、ミドルウェア、クラウドサービスが含まれます。 1。OracLedatabaseはそのコア製品であり、効率的なデータストレージと管理をサポートしています。 2。OracleWeblogicserverなどのミドルウェアは、さまざまなシステムに接続します。 3。OracleCloudは、クラウドコンピューティングソリューションの完全なセットを提供します。

MySQLとOracle:機能と機能の重要な違いMySQLとOracle:機能と機能の重要な違いApr 18, 2025 am 12:15 AM

MySQLとOracleには、パフォーマンス、スケーラビリティ、セキュリティに利点があります。 1)パフォーマンス:MySQLは読み取り操作と高い並行性に適しており、Oracleは複雑なクエリとビッグデータ処理に優れています。 2)スケーラビリティ:MySQLはマスタースレーブの複製とシャードを通じて拡張され、OracleはRACを使用して高可用性と負荷分散を提供します。 3)セキュリティ:MySQLはきめ細かい許可制御を提供しますが、Oracleにはより包括的なセキュリティ機能と自動化ツールがあります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。