mysql ストアド プロシージャの変数タイプ: 1. ローカル変数、定義構文は「DECLARE 変数名のデータ型」です; 2. ユーザー変数、定義構文は「set @variable name:=...」です。 ; 3 、システム変数。グローバル変数「@@global」とセッション変数「@@session」に分けられます。
このチュートリアルの動作環境: Windows10 システム、mysql8.0.22 バージョン、Dell G3 コンピューター。
MySQL ストアド プロシージャの一般的な変数: ローカル変数、ユーザー変数、システム変数
プロセス本体で、一部の値を一時的に保存するローカル変数を宣言できます。
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 ...];
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> set @zjc:=999; mysql> select@zjc;+------+ | @zjc | +------+ | 999 | +------+
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
Mysql 変数は動的言語に似ており、変数の値は割り当てられる値のタイプに応じて変化します。
2. システム変数: システム変数はスコープに応じて、グローバル変数とセッション変数 (@ 記号 2 つ) に分けられます
①グローバル変数 (@@global.)
MySQL が起動すると、サーバーはグローバル変数をデフォルト値に自動的に初期化します;
グローバル変数のデフォルト値は、MySQL 構成ファイル (my.ini、my.cnf) を変更することで変更できます。 )。
②セッション変数 (@@session.)
新しい接続が確立されるたびに、MySQL によって初期化されます;
MYSQL は現在のすべてのグローバル変数を保存します 値をコピーしますセッション変数として(つまり、セッションの確立後にセッション変数とグローバル変数の値が手動で変更されない場合、これらすべての変数の値は同じになります)。
#グローバル変数とセッション変数の違い: グローバル変数への変更はサーバー全体に影響しますが、セッション変数への変更は現在のセッションにのみ影響します。
推奨学習: mysql ビデオ チュートリアル
以上がmysql ストアド プロシージャにはどのような変数タイプがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。