MySQL ストアド プロシージャ パラメータには、in、out、inout の 3 種類があります。それぞれの機能や特徴は何ですか? 1. MySQL ストアド プロシージャ パラメータ (in) MySQL ストアド プロシージャの "in" パラメータ: C 言語の関数パラメータの値渡しと同様に、このパラメータは MySQL ストアド プロシージャ内で変更できますが、in 型パラメータの変更は呼び出し元には表示されません。 pr_param_in が存在する場合はプロシージャを削除します。 プロシージャpr_param_inを作成する ( in id int -- in type MySQL ストアド プロシージャ パラメータ) 始める (idがnullではない)の場合 id = id + 1 を設定します。 終了の場合; id_innerとしてidを選択します。 終わり; @id = 10 を設定します。 pr_param_in(@id); を呼び出します。 @id を id_out として選択します。 mysql> pr_param_in(@id); を呼び出します。 +----------+ | id_inner | +----------+ | 11 | +----------+ mysql> @id を id_out として選択します。 +--------+ | id_out | +--------+ | 10 | +--------+ ユーザー変数 @id に渡された値は 10 であることがわかります。ストアド プロシージャを実行すると、プロシージャ内の値は 11 (id_inner) になりますが、外部変数の値は 10 (id_out) のままです。 2. MySQL ストアド プロシージャ パラメータ (出力) MySQL ストアド プロシージャの "out" パラメーター: ストアド プロシージャ内の値を呼び出し元に渡します。ストアド プロシージャ内では、呼び出し元がストアド プロシージャ パラメータに値を設定したかどうかに関係なく、パラメータの初期値は null になります。 pr_param_out が存在する場合はプロシージャを削除します。 プロシージャpr_param_outを作成する ( 出力ID int ) 始める select id as id_inner_1; -- idの初期値はnullです (idがnullではない)の場合 id = id + 1 を設定します。 id_inner_2としてidを選択します。 それ以外 idに1を選択します。 終了の場合; id_inner_3としてidを選択します。 終わり; @id = 10 を設定します。 pr_param_out(@id) を呼び出します。 @id を id_out として選択します。 mysql> @id を 10 に設定します。 マイSQL> mysql> pr_param_out(@id); を呼び出します。 +------------+ | id_inner_1 | +------------+ | NULL | +------------+ +------------+ | id_inner_3 | +------------+ | 1 | +------------+ mysql> @id を id_out として選択します。 +--------+ | id_out | +--------+ | 1 | +--------+ ユーザー定義変数 @id を 10 に設定しても、@id をストアド プロシージャに渡した後、ストアド プロシージャ内の id の初期値は常に null (id_inner_1) になることがわかります。最後に、ID 値 (id_out = 1) が呼び出し元に返されます。 3. MySQL ストアド プロシージャ パラメータ (inout) MySQL ストアド プロシージャの inout パラメータは out パラメータに似ており、どちらもストアド プロシージャ内から呼び出し元に値を渡すことができます。違いは、呼び出し元が inout パラメータを介してストアド プロシージャに値を渡すこともできることです。 pr_param_inout が存在する場合はプロシージャを削除します。 プロシージャpr_param_inoutを作成する ( 入出力ID int ) 始める select id as id_inner_1; -- id値は呼び出し元から渡された値です。if (id is not null) then id = id + 1 を設定します。 id_inner_2としてidを選択します。 それ以外 idに1を選択します。 終了の場合; id_inner_3としてidを選択します。 終わり; @id = 10 を設定します。 pr_param_inout(@id); を呼び出します。 @id を id_out として選択します。 mysql> @id を 10 に設定します。 マイSQL> mysql> pr_param_inout(@id); を呼び出します。 +------------+ | id_inner_1 | +------------+ | 10 | +------------+ +------------+ | id_inner_2 | +------------+ | 11 | +------------+ +------------+ | id_inner_3 | +------------+ | 11 | +------------+ マイSQL> mysql> @id を id_out として選択します。 +--------+ | id_out | +--------+ | 11 | +--------+ 結果から、@id (10) をストアド プロシージャに渡した後、ストアド プロシージャは最終的に計算された値 11 (id_inner_3) を呼び出し元に返すことがわかります。 MySQL ストアド プロシージャの inout パラメータの動作は、C 言語関数の参照渡しに似ています。 上記の例から、MySQL ストアド プロシージャにデータを渡すだけの場合は、「in」型パラメータを使用します。MySQL ストアド プロシージャから値を返すだけの場合は、「out」型パラメータを使用します。MySQL ストアド プロシージャにデータを渡し、計算後にそれを戻す必要がある場合は、「inout」型パラメータを使用します。 要約する 以上が、MySQL データ ストレージ プロセス パラメータ例の詳細な説明に関するこの記事の内容のすべてです。MySQL を理解するのに役立つことを願っています。興味のある方は、引き続きこのサイトを参照してください: MySQL での時刻と日付の型を保存する選択問題の分析、MySQL の変数の宣言、ストアド プロシージャの分析など。質問がある場合は、いつでもメッセージを残していただければ、編集者がすぐに返信します。このサイトをサポートしてくれた友人たちに感謝します! 以下もご興味があるかもしれません:
|
<<: VMware Workstation 14 Pro のインストールとアクティベーションのグラフィック チュートリアル
>>: Element-ui NavMenuサブメニューを使用して再帰的に生成する場合のエラーの詳細な説明
1. 環境と関連ソフトウェア仮想マシン: VMwore Workstation Linuxシステム:...
以前書いた内容が詳細さに欠けていたため、今回は修正・補足しました。ただし、以前の MySQL バージ...
準備する:教師テーブルと生徒テーブルを定義し、生徒テーブルで教師テーブルIDを参照します。テーブルt...
1. 基本ライン 2. 特殊効果(効果は独立しておらず、互いに組み合わせることができます) 1. 両...
この記事で使用されているPHPベースイメージはphp:7.3-apacheです。この記事の Lara...
Linux では、通常、ファイルの名前を変更するために mv コマンドを使用します。これは、単一のフ...
目次1. 仮想DOMとは何ですか? 2. 仮想 DOM が必要な理由3. 仮想DOMはどのようにして...
これが何を指しているのかをどのように判断するのでしょうか? ①グローバル環境で呼び出された場合はwi...
序文Index Condition Pushdown (ICP) は、MySQL 5.6 の新機能で...
目次1. 問題の説明2. 問題解決1. 問題の説明Vue プロジェクトを開発する場合、作成時に誤って...
MySQL インストール パッケージをダウンロードします。mysql-8.0.11-winx64 を...
すべてのアニメーションの基本原理は、対応する画像を短時間で次々に表示し、視覚的に動いているように見せ...
実際のWebページ開発でも、アコーディオンは頻繁に登場します。簡単なアコーディオンを作ったのですが、...
以前、追加と変更を一緒に記述したテストプログラムを書いたことがあります。変更が必要な場合は、フォーム...
物件の詳細な説明transition 属性の目的は、一部の CSS プロパティ (背景など) をスム...