ホームページ  >  記事  >  データベース  >  mysqlストアドプロシージャの構文とは何ですか?

mysqlストアドプロシージャの構文とは何ですか?

WBOY
WBOYオリジナル
2022-02-17 14:46:416812ブラウズ

mysql では、「CREATE PROCEDURE」ステートメントを使用してストアド プロシージャを作成できます。構文は、「CREATE PROCEDURE プロセス名 プロセス パラメータ プロセス本体 プロセス パラメータ 形式 [IN|OUT|INOUT] パラメータ名 型」です。 。

mysqlストアドプロシージャの構文とは何ですか?

このチュートリアルの動作環境: Windows10 システム、mysql8.0.22 バージョン、Dell G3 コンピューター。

mysql ストアド プロシージャの構文とは

SQL ステートメントは最初にコンパイルしてから実行する必要があり、ストアド プロシージャ (ストアド プロシージャ) は特定の関数を完了するための SQL ステートメントのセットです。データベース内で、ユーザーは名前を指定し、パラメーター (ストアド プロシージャにパラメーターがある場合) を指定することによって、ストアド プロシージャを呼び出して実行します。

ストアド プロシージャは、データベースに作成および保存されるプログラム可能な関数であり、SQL ステートメントと制御構造で構成できます。ストアド プロシージャは、異なるアプリケーションやプラットフォームで同じ機能を実行する場合、または特定の機能をカプセル化する場合に便利です。データベース内のストアド プロシージャは、プログラミングにおけるオブジェクト指向アプローチのシミュレーションとみなすことができ、これによりデータへのアクセス方法を制御できます。

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

(1). SQL 言語の機能と柔軟性の強化: ストアド プロシージャは制御ステートメントを使用して作成でき、強力な柔軟性を備えています。複雑な判断とより複雑な操作を完了します。

(2). 標準コンポーネント プログラミング: ストアド プロシージャの作成後、ストアド プロシージャの SQL ステートメントを書き直すことなく、プログラム内でそのストアド プロシージャを複数回呼び出すことができます。また、データベースの専門家は、アプリケーションのソース コードに影響を与えることなく、いつでもストアド プロシージャを変更できます。

(3). 実行速度の高速化: 操作に大量の Transaction-SQL コードが含まれているか、複数回実行される場合、ストアド プロシージャはバッチ処理よりもはるかに高速に実行されます。ストアド プロシージャはプリコンパイルされているためです。ストアド プロシージャが初めて実行されるとき、オプティマイザによってクエリが分析および最適化され、最終的に実行プランがシステム テーブルに保存されます。バッチ Transaction-SQL ステートメントは、実行するたびにコンパイルして最適化する必要があり、速度は比較的遅くなります。

(4). ネットワーク トラフィックの削減: 同じデータベース オブジェクトに対する操作 (クエリ、変更など) の場合、この操作に含まれる Transaction-SQL ステートメントがストアド プロシージャに編成されている場合、トランザクションがストアド プロシージャが呼び出されるとき、呼び出しステートメントのみがネットワーク経由で送信されるため、ネットワーク トラフィックが大幅に削減され、ネットワーク負荷が軽減されます。

(5). セキュリティ機構として活用する:特定のストアドプロセスの実行権限を制限することで、該当するデータへのアクセス権限を制限し、不正なユーザーによるデータへのアクセスを回避できます。にアクセスし、データのセキュリティを確保します。

MySQL のストアド プロシージャ

ストアド プロシージャはデータベースの重要な機能です。MySQL 5.0 は以前はストアド プロシージャをサポートしていなかったので、MySQL のアプリケーションが大幅に減少しました。幸いなことに、MySQL 5.0 ではストアド プロシージャのサポートが開始されており、データベースの処理速度が大幅に向上し、データベース プログラミングの柔軟性も向上します。

MySQL ストアド プロシージャの作成

Syntax

CREATE PROCEDURE  过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体
DELIMITER //
  CREATE PROCEDURE myproc(OUT s int)
    BEGIN
      SELECT COUNT(*) INTO s FROM students;
    END
    //
DELIMITER ;

Delimiter

MySQL はデフォルトで区切り文字として「;」を使用します。区切り文字が宣言されていない場合、コンパイラはストアド プロシージャを SQL ステートメントとして扱うため、コンパイル プロセスでエラーが報告されます。そのため、事前に "DELIMITER //" を使用して現在のセグメント区切り文字を宣言する必要があります。コンパイラは 2 つの「//」を区切ることができます。その間の内容はストアド プロシージャのコードとして扱われ、これらのコードは実行されません。「DELIMITER;」は区切り文字を復元することを意味します。

パラメータ

ストアド プロシージャには、必要に応じて入力、出力、入力および出力パラメータを含めることができます。複数のパラメータがある場合は、「,」を使用して区切ります。 MySQL ストアド プロシージャのパラメータは、ストアド プロシージャの定義で使用されます。パラメータ タイプには、IN、OUT、INOUT の 3 つがあります:

ストアド プロシージャを呼び出すときに、IN パラメータの値を指定する必要があります。ストアド プロシージャ内のパラメータ。値は返されず、デフォルト値になります。

OUT: ストアド プロシージャ内で値を変更でき、返すことができます。

INOUT: 呼び出し時に指定します。

プロセス本体

プロセス本体の開始と終了は、BEGIN と END によって識別されます。

推奨学習: mysql ビデオ チュートリアル

以上がmysqlストアドプロシージャの構文とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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