MySQLデータストレージプロセスパラメータの詳細な例

MySQLデータストレージプロセスパラメータの詳細な例

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 の変数の宣言、ストアド プロシージャの分析など。質問がある場合は、いつでもメッセージを残していただければ、編集者がすぐに返信します。このサイトをサポートしてくれた友人たちに感謝します!

以下もご興味があるかもしれません:
  • MySQL データベースにスクレイピー データを保存する 2 つの方法 (同期と非同期)
  • MySQL に JSON のようなデータを保存する Python の例
  • Ubuntu に MySQL 5.7 をインストールし、データ ストレージ パスを構成する方法
  • MySQLでデータベースデータ保存ディレクトリを変更する方法
  • Centos7でmysql5.7.19のデータ保存場所を移動する方法
  • MySQLのスイッチングデータ保存ディレクトリの実装方法
  • MySQL 5.7 でデータベースのデータ保存場所を変更する方法
  • MySQL データベース アーキテクチャの詳細
  • MySQL 空間データストレージと関数

<<:  VMware Workstation 14 Pro のインストールとアクティベーションのグラフィック チュートリアル

>>:  Element-ui NavMenuサブメニューを使用して再帰的に生成する場合のエラーの詳細な説明

推薦する

DockerでMySQLマスタースレーブ環境を構築する方法の詳しい説明

序文この記事では、docker-compose と dockerfile を使用して、binlog ...

SWFObjectを使用すると、HTMLにFlashを挿入する際のブラウザ互換性の問題を完全に解決できます。

一緒に学びましょう1. 伝統的な方法コードをコピーコードは次のとおりです。 <object c...

JSコンストラクタとインスタンス化およびプロトタイプ導入の関係

目次1. コンストラクタとインスタンス化2. コンストラクターとインスタンス化の関係は何ですか? 3...

SSL を実装するために nginx を設定する方法の例

環境説明サーバーシステム: Ubuntu 18.04 64ビットnginx: 1.14この記事では主...

18 個のキラー JavaScript ワンライナー

序文JavaScript は習得が最も簡単な言語の 1 つであるため、成長と繁栄を続けており、市場に...

Navicat for MySQL チュートリアル

まず、Navicat for MySQL をダウンロードしてインストールする必要があります。正規版の...

seata docker 高可用性デプロイメントの詳細な紹介

バージョン1.4.2公式ドキュメントドッカーハブ起動する環境変数SEATA_CONFIG_NAMEを...

Tudou.comのホームページのデザイン方法

<br />私は数年間フロントエンドに取り組んできました。フロントエンドについて完全に理...

vue 動的コンポーネント

目次1. コンポーネント2. キープアライブ2.1 問題点2.2 キープアライブを使って解決する2....

Dockerを使用してGitlabを素早くデプロイする方法

1. GitLabイメージをダウンロードする docker pull gitlab/gitlab-c...

MySQL に配列を保存するサンプルコードと方法

多くの場合、ストアド プロシージャを作成するときに配列がよく使用されますが、MySQL ではストアド...

非ルートユーザーを使用してDockerコンテナでスクリプト操作を実行する

アプリケーションをコンテナ化した後、Docker コンテナを起動すると、デフォルトで root ユー...

CentOS に MySQL 5.5 をインストールするための完全な手順

目次1. インストール前の準備、インストールパッケージのダウンロード1 インストールの準備2 インス...

純粋な HTML タグにどれくらい精通していますか?

以下の HTML タグには、基本的に既存のタグがすべて含まれています。数分かけて 1 つずつ参照する...

Windows 上の MySQL バージョン 5.7 でエンコードを UTF-8 に変更する方法

序文MySQLの勉強を始めたばかりで、公式サイトから最新バージョン5.7.14をダウンロードしました...