目次
mysql ストアド プロシージャの変数タイプとは何ですか?
1 . ローカル変数 " >1 . ローカル変数
" >2. ユーザー変数
ホームページ データベース mysql チュートリアル mysql ストアド プロシージャにはどのような変数タイプがありますか?

mysql ストアド プロシージャにはどのような変数タイプがありますか?

May 16, 2022 am 10:30 AM
mysql

mysql ストアド プロシージャの変数タイプ: 1. ローカル変数、定義構文は「DECLARE 変数名のデータ型」です; 2. ユーザー変数、定義構文は「set @variable name:=...」です。 ; 3 、システム変数。グローバル変数「@@global」とセッション変数「@@session」に分けられます。

mysql ストアド プロシージャにはどのような変数タイプがありますか?

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

mysql ストアド プロシージャの変数タイプとは何ですか?

MySQL ストアド プロシージャの一般的な変数: ローカル変数、ユーザー変数、システム変数

1 . ローカル変数

プロセス本体で、一部の値を一時的に保存するローカル変数を宣言できます。

1. ローカル変数を定義するための構文:

DECLARE  var_name[, var_name] ...  type [DEFAULT value];
ログイン後にコピー

このうち、type は、int、float、date、varchar(length)

## などの MySQL のデータ型です。 #Note:

①DECLARE はローカル変数の宣言に使用され、DECLARE は BEGIN ... END 複合ステートメントでのみ使用され、複合ステートメントの先頭、他のステートメントの前になければなりません。同じ名前の変数を宣言するブロックを除き、ネストされたブロックで使用されます。

② 変数にデフォルト値を指定する場合は、DEFAULT 句を使用します (値は定数または式として指定できます)。DEFAULT 句がない場合、初期値は NULL です。

2. 基本形式:

CREATE PROCEDURE sp_name ([proc_parameter[,...]])
BEGIN
DECLARE var_name1 type [DEFAULT value];
DECLARE var_name2 type [DEFAULT value];
DECLARE……;
[characteristic ...];
ログイン後にコピー

例 1: プロセスを作成し、ローカル変数のデフォルト値を指定して、プロセスを呼び出します

mysql>delimiter $$
mysql> create procedure test1(out num1 int)->begin-> declare num2 int default 100;-> set num1=num2;->end->$$
mysql>delimiter ;
mysql>call test1(@num);
mysql> select@num;+------+
| @num |
+------+
| 100 |
+------+
ログイン後にコピー

分析:

test1 ストアド プロシージャを作成します: 出力は num1 変数の値です。ローカル変数 num2 を int 型であるように宣言し、デフォルト値は 100 です。set を使用して num2 の値を割り当てます (処理されない場合、デフォルト値) to num1;

Call test1: ユーザー変数 num を使用して、ストアド プロシージャの出力値 num1 を受け取ります...

リテラル値に加えて、デフォルト値も使用できます。スカラー サブクエリを含む複雑な式である必要があります。

例 2: すべてのプレーヤーの数を使用して変数を初期化する作成プロセス

mysql>delimiter $$
mysql> create procedure test2(out num1 int)->begin-> declare num2 int default(select count(*) fromPLAYERS);-> set num1=num2;->end$$mysql>delimiter ;
mysql>call test2(@num);mysql> select@num;+------+
| @num |
+------+
| 14 |
+------+
ログイン後にコピー

注: MySQL はローカル変数として配列をサポートしません。

3. ローカル変数のスコープ:

つまり、変数がエラーなく正常に使用できるプログラム ブロックのスコープです。

ネストされたブロックの場合、

外側のブロックで宣言された変数は内側のブロックで直接使用できます;

内側のブロックで宣言された変数は内部でのみ使用できますブロック。

mysql ストアド プロシージャにはどのような変数タイプがありますか?

分析: 変数 v2 は内部ブロック b2 でのみ使用できます。set ステートメントとブロック b3 の最後の set ステートメントが間違っています。

2. ユーザー変数

>ユーザー変数はデータベース接続に関連しています: 現在の接続で宣言された変数は、接続が切断されると消えます; で宣言された変数この接続を別の接続で使用することはできません。

>@ 記号はユーザー変数を表します。

1. ユーザー変数の定義 (set、select):

1) set ステートメントはユーザー変数に値を割り当てます:

「=」または「代入文字として「:=」;

各変数に代入される expr は、整数、実数、文字列、または NULL 値にすることができます;

mysql> set @zjc:=999;
mysql> select@zjc;+------+
| @zjc |
+------+
| 999 |
+------+
ログイン後にコピー

2) select ステートメントは、値をユーザー変数:

= は非 SET ステートメントの比較演算子とみなされているため、割り当て演算子は「=」ではなく「:=」である必要があります;

mysql> select @abc:=123;+-----------+
| @abc:=123 |
+-----------+
| 123 |
+-----------+mysql> select@abc;+------+
| @abc |
+------+
| 123 |
+------+
ログイン後にコピー

注:

① ユーザー変数はどこでも使用可能 定義されていればどこでも使用でき、定義されていない場合は直接使用できます (値のデフォルトは null)。

②ユーザー変数の変数名の形式: @var_name に @ 記号を付けます。

③ユーザー変数を乱用すると、プログラムの理解と管理が困難になります。

拡張変数の割り当て: set 構文

MySQL の変数はデータ型を厳密に制限しません。変数のデータ型は、変数に割り当てられた値に応じていつでも変わります。

SET variable_assignment [, variable_assignment] ...
variable_assignment:
user_var_name=expr|[GLOBAL | SESSION] system_var_name =expr|[@@global. | @@session. | @@] system_var_name = expr
ログイン後にコピー
## は、ユーザー変数、システム変数に値を割り当てるために使用されます。また、プロセス内のローカル変数に値を割り当てることもできます。

注:

システム変数を設定する場合、スコープの変更はなく、デフォルトはセッション スコープを参照します;

(特別な注意、一部のシステム変数には、スコープの変更は設定できないため、スコープを使用してシステム変数を設定することをお勧めします)。

2. ユーザー変数のスコープ

現在の接続で定義されているユーザー変数が現在の接続で使用されている限りは問題ありませんが、それ以外は問題ありません。

3. ローカル変数との違い:

ローカル変数には変数名のみがあり、@ 記号はありません; ユーザー変数名の前に @ 記号が付きます。

これらは最初に定義されてから使用されます。未定義の変数の場合、選択値は空です。

ローカル変数はストアド プロシージャ内でのみ使用され、プロセス外では意味がありません。begin-end ブロックが処理されるとローカル変数は消えますが、ユーザー変数はストアド プロシージャの内部と外部で使用できます。

ヒント: ストアド プロシージャ内では、ユーザー変数の代わりにローカル変数を使用します。

3. MySQL 変数のユーザー変数とシステム変数

1. ユーザー変数は上記の通り@var_name (@ 記号)

①ユーザー変数はデータベース接続に関連しています。変数は接続後に宣言され、接続が切断されると自動的に消えます。

②割り当てなしでユーザー変数を選択し、NULL (値なし) を返します。

Mysql 変数は動的言語に似ており、変数の値は割り当てられる値のタイプに応じて変化します。

2. システム変数: システム変数はスコープに応じて、グローバル変数とセッション変数 (@ 記号 2 つ) に分けられます

①グローバル変数 (@@global.)

MySQL が起動すると、サーバーはグローバル変数をデフォルト値に自動的に初期化します;

グローバル変数のデフォルト値は、MySQL 構成ファイル (my.ini、my.cnf) を変更することで変更できます。 )。

②セッション変数 (@@session.)

新しい接続が確立されるたびに、MySQL によって初期化されます;

MYSQL は現在のすべてのグローバル変数を保存します 値をコピーしますセッション変数として(つまり、セッションの確立後にセッション変数とグローバル変数の値が手動で変更されない場合、これらすべての変数の値は同じになります)。

#グローバル変数とセッション変数の違い: グローバル変数への変更はサーバー全体に影響しますが、セッション変数への変更は現在のセッションにのみ影響します。

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

以上がmysql ストアド プロシージャにはどのような変数タイプがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQL:初心者向けのデータ管理の容易さ MySQL:初心者向けのデータ管理の容易さ Apr 09, 2025 am 12:07 AM

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。

NAVICATでデータベースパスワードを取得できますか? NAVICATでデータベースパスワードを取得できますか? Apr 08, 2025 pm 09:51 PM

NAVICAT自体はデータベースパスワードを保存せず、暗号化されたパスワードのみを取得できます。解決策:1。パスワードマネージャーを確認します。 2。NAVICATの「パスワードを記憶する」機能を確認します。 3.データベースパスワードをリセットします。 4.データベース管理者に連絡してください。

Navicatプレミアムの作成方法 Navicatプレミアムの作成方法 Apr 09, 2025 am 07:09 AM

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

MySQLでテーブルをコピーする方法 MySQLでテーブルをコピーする方法 Apr 08, 2025 pm 07:24 PM

MySQLでテーブルをコピーするには、新しいテーブルの作成、データの挿入、外部キーの設定、インデックスのコピー、トリガー、ストアドプロシージャ、および機能が必要です。特定の手順には、同じ構造を持つ新しいテーブルの作成が含まれます。元のテーブルからデータを新しいテーブルに挿入します。同じ外部キーの制約を設定します(元のテーブルに1つがある場合)。同じインデックスを作成します。同じトリガーを作成します(元のテーブルに1つがある場合)。同じストアドプロシージャまたは関数を作成します(元のテーブルが使用されている場合)。

mysqlを表示する方法 mysqlを表示する方法 Apr 08, 2025 pm 07:21 PM

次のコマンドでmysqlデータベースを表示します。サーバーに接続します:mysql -u username -pパスワードrun showデータベース。すべての既存のデータベースを取得するコマンド[データベース]を選択します。データベース名を使用します。テーブルを表示:表を表示します。テーブル構造を表示:テーブル名を説明してください。データを表示:[テーブル名]から[ *]を選択します。

MariadBのNAVICATでデータベースパスワードを表示する方法は? MariadBのNAVICATでデータベースパスワードを表示する方法は? Apr 08, 2025 pm 09:18 PM

Passwordが暗号化された形式で保存されているため、MariadbのNavicatはデータベースパスワードを直接表示できません。データベースのセキュリティを確保するには、パスワードをリセットするには3つの方法があります。NAVICATを介してパスワードをリセットし、複雑なパスワードを設定します。構成ファイルを表示します(推奨されていない、高リスク)。システムコマンドラインツールを使用します(推奨されません。コマンドラインツールに習熟する必要があります)。

NAVICATでSQLを実行する方法 NAVICATでSQLを実行する方法 Apr 08, 2025 pm 11:42 PM

NAVICATでSQLを実行する手順:データベースに接続します。 SQLエディターウィンドウを作成します。 SQLクエリまたはスクリプトを書きます。 [実行]ボタンをクリックして、クエリまたはスクリプトを実行します。結果を表示します(クエリが実行された場合)。

NavicatでMySQLへの新しい接続を作成する方法 NavicatでMySQLへの新しい接続を作成する方法 Apr 09, 2025 am 07:21 AM

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

See all articles