Oracleストアドプロシージャを呼び出す方法

PHPz
リリース: 2023-04-18 09:29:40
オリジナル
1708 人が閲覧しました

エンタープライズ アプリケーションのサイズが増大し続けるにつれて、データ処理に対する要求も増大します。エンタープライズレベルのデータベースの代表の 1 つとして、Oracle のストアド プロシージャにおける利点はますます顕著になってきています。ストアド プロシージャは、データベースの実行効率を向上させるだけでなく、データ処理をより安全で信頼性の高いものにすることができます。この記事では、Oracle ストアド プロシージャを呼び出す方法を紹介します。

1. Oracle ストアド プロシージャとは

Oracle ストアド プロシージャは、PL/SQL ブロックの一種であり、プリコンパイルされた SQL ステートメントの組み合わせとみなすことができます。ストアド プロシージャはパラメータを受け入れ、特定のビジネス ロジックを実行し、結果を返すことができます。 SQL文を個別に実行する場合と比較して、ストアド・プロシージャには次の利点があります。

  1. データベース効率の向上

ストアド・プロシージャはプリコンパイルされており、Oracle Databaseがコンパイルすることを意味します プロシージャの最適化保管されているとき。ストアド プロシージャを呼び出すときにデータベースを再度コンパイルする必要がないため、実行効率が向上します。

  1. データ セキュリティの向上

ストアド プロシージャはパラメータを受け入れることができるため、さまざまなパラメータに基づいてさまざまな操作を実行できます。これにより、データ処理がより安全になり、潜在的なセキュリティ問題が回避されます。

  1. アプリケーションの信頼性の向上

アプリケーション内でストアド プロシージャを呼び出すことができるため、アプリケーション コードがより簡潔になり、ロジックが明確になり、アプリケーションの信頼性が向上します。 。

2. Oracle ストアド プロシージャの呼び出し方法

PL/SQL ブロックまたは SQL 文を使用して、Oracle ストアド プロシージャを呼び出すことができます。これら 2 つの方法については、以下で個別に紹介します。

  1. PL/SQL ブロックを使用した Oracle ストアド プロシージャの呼び出し

PL/SQL ブロックを使用した Oracle ストアド プロシージャの呼び出しは非常に簡単です。次のストアド プロシージャがあるとします。

CREATE OR REPLACE PROCEDURE get_employee_info (

p_employee_id IN NUMBER,
p_employee_name OUT VARCHAR2,
p_employee_dept OUT VARCHAR2
ログイン後にコピー

) AS
BEGIN

SELECT employee_name, department_name
INTO p_employee_name, p_employee_dept
FROM employee_tbl
JOIN department_tbl ON employee_tbl.department_id = department_tbl.department_id
WHERE employee_id = p_employee_id;
ログイン後にコピー

END;

これはストアド プロシージャです。プロシージャは、従業員 ID をパラメータとして受け入れ、従業員の名前と部門名を返します。 PL/SQL ブロックを使用してこのストアド プロシージャを呼び出すには、次のコードを使用できます:

DECLARE

v_employee_id NUMBER := 123;
v_employee_name VARCHAR2(100);
v_employee_dept VARCHAR2(100);
ログイン後にコピー
ログイン後にコピー

BEGIN

get_employee_info(
    p_employee_id => v_employee_id,
    p_employee_name => v_employee_name,
    p_employee_dept => v_employee_dept
);
DBMS_OUTPUT.PUT_LINE(v_employee_name || ' works in ' || v_employee_dept);
ログイン後にコピー

END;

Firstこのキーワードは 3 つの変数を定義します。v_employee_id は従業員 ID、v_employee_name は従業員の名前、v_employee_dept は従業員の部門の名前を表します。次に、ストアド プロシージャ get_employee_info が BEGIN と END の間で呼び出され、パラメータが対応する変数に割り当てられます。最後に、DBMS_OUTPUT.PUT_LINE を使用して従業員名と部門名を出力します。

PL/SQL ブロックでストアド プロシージャを呼び出すと非常に便利です。変数を定義して値を代入することで、ストアド プロシージャの戻り値に対する操作を実行できます。

  1. SQL 文を使用して Oracle ストアド プロシージャを呼び出す

PL/SQL ブロックを作成したくない場合は、SQL 文を使用してストアド プロシージャを呼び出すこともできます。このとき、Oracle の EXECUTE IMMEDIATE ステートメントを使用する必要があります。以下は、SQL ステートメントを使用して前述のストアド プロシージャを呼び出す例です。

DECLARE

v_employee_id NUMBER := 123;
v_employee_name VARCHAR2(100);
v_employee_dept VARCHAR2(100);
ログイン後にコピー
ログイン後にコピー

BEGIN

EXECUTE IMMEDIATE 'BEGIN get_employee_info(:1,:2,:3); END;'
    USING v_employee_id, OUT v_employee_name, OUT v_employee_dept;
DBMS_OUTPUT.PUT_LINE(v_employee_name || ' works in ' || v_employee_dept);
ログイン後にコピー

END;

Using aストアド プロシージャを呼び出す SQL ステートメント このプロシージャでは、EXECUTE IMMEDIATE ステートメントを使用する必要があります。さらに、USING キーワードを使用してパラメーターを指定し、ストアド プロシージャの戻り値を対応する変数に割り当てる必要もあります。最後に、 DBMS_OUTPUT.PUT_LINE を使用してストアド プロシージャの戻り値を出力できます。

3. 注意事項

Oracle ストアド プロシージャを呼び出すときは、次の点に注意する必要があります:

  1. ストアド プロシージャを最初に作成する必要があります

ストアド プロシージャを呼び出す前に、ストアド プロシージャをデータベース内に作成する必要があります。ストアド プロシージャが作成されていない場合、それを呼び出すことはできません。

  1. パラメータの型は一致する必要があります

ストアド プロシージャを呼び出すときは、渡されたパラメータの型がストアド プロシージャで定義されたパラメータの型と一致することを確認する必要があります。そうしないと、実行時エラーが発生します。

  1. 変数を使用して戻り値を格納する

ストアド プロシージャを呼び出すときは、変数を使用してストアド プロシージャの戻り値を格納する必要があります。変数が定義されていない場合、または戻り値が変数に格納されていない場合、ストアド プロシージャの戻り値を取得できません。

  1. ストアド プロシージャにエラー処理を追加する

ストアド プロシージャを作成するときは、エラー処理コードを追加する必要があります。そうしないと、ストアド プロシージャでエラーが発生したときに、エラーが時間内に検出され処理されなくなります。

概要

Oracle ストアド プロシージャの呼び出しは、データベースの効率、データ セキュリティ、アプリケーションの信頼性を向上させる重要な手段です。この記事では、PL/SQLブロックとSQL文を使用してOracleストアドプロシージャを呼び出す方法と注意事項を紹介します。この記事が、読者が Oracle ストアド プロシージャをより適切に使用するのに役立つことを願っています。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!