MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのユーザー定義変数とローカル変数?


ユーザー定義変数は、セッション固有の変数とも呼ばれます。これは緩く型付けされた変数の一種であり、セッションのどこかで初期化でき、セッションが終了するまでユーザー定義変数の値を含みます。

ユーザー定義変数の前には記号@が付いています。例:

@anyVariableName;

ユーザー定義変数を初期化する方法は2つあります。 SETコマンドまたはSELECTクエリを使用できます。最初のアプローチは次のとおりです。

SET @anyVariableName=anyValue;

2番目のアプローチは次のとおりです。

SELECT @anyVariableName :=anyValue;

SELECTクエリでコロン(:)を使用しない場合は、式として評価されます。結果はtrueまたはfalseのいずれかになります:

mysql> select @m=10;

出力は次のとおりです。

+-------+
| @m=10 |
+-------+
|     1 |
+-------+
1 row in set (0.00 sec)

ローカル変数は、ストアドプロシージャ、関数などで使用できます。DECLAREキーワードとともに使用されます。ユーザー定義変数のような@プレフィックスは必要ありません。

ローカル変数の構文は次のとおりです。

DECLARE yourVariableName dataType;

:ローカル変数とユーザー定義変数の主な違いは、セッション固有の変数またはユーザー定義変数がNULLで再初期化されないのに、ストアドプロシージャが呼び出されるたびに、ローカル変数がNULL値で再初期化されることです。あるユーザーが設定したユーザー定義変数は、他のユーザーには表示されません。特定のユーザーのセッション変数は、ユーザーが終了すると自動的に破棄されます。

これは、セッション固有の変数とストアドプロシージャを使用したローカル変数のデモです。ローカル変数とユーザー定義変数を使用してストアドプロシージャを作成するためのクエリは次のとおりです。

mysql> DELIMITER //
mysql> CREATE PROCEDURE sp_LocalAndUserDefinedVariableDemo()
   -> BEGIN
   -> DECLARE localVariable int default 10;
   -> SET localVariable=localVariable+10;  
   -> SET @userVariable=@userVariable+10;
   -> SELECT localVariable;
   -> SELECT @userVariable;
   -> END;
   -> //
Query OK, 0 rows affected (0.39 sec)
mysql> DELIMITER ;

次に、ユーザー定義変数の値を設定します。クエリは次のとおりです。

mysql> SET @userVariable=10;
Query OK, 0 rows affected (0.00 sec)

次に、ストアドプロシージャを呼び出します。最初の呼び出しでは、ユーザー定義変数は10 + 10 =20になり、ローカル変数は10 + 10=20になります。

callコマンドを使用してストアドプロシージャを呼び出します:

mysql> CALL sp_LocalAndUserDefinedVariableDemo();

出力は次のとおりです。

+---------------+
| localVariable |
+---------------+
|            20 |
+---------------+
1 row in set (0.32 sec)
+---------------+
| @userVariable |
+---------------+
|            20 |
+---------------+
1 row in set (0.34 sec)
Query OK, 0 rows affected (0.36 sec)

2番目の呼び出しでは、ユーザー定義変数は値20を保持し、20 + 10 =30のように10を追加しますが、ローカル変数は再び10で再初期化され、10 + 10=20のように10を追加します。

ストアドプロシージャを呼び出して、サンプル出力を確認します。

mysql> CALL sp_LocalAndUserDefinedVariableDemo();

出力は次のとおりです。

+---------------+
| localVariable |
+---------------+
|            20 |
+---------------+
1 row in set (0.00 sec)
+---------------+
| @userVariable |
+---------------+
|            30 |
+---------------+
1 row in set (0.01 sec)
Query OK, 0 rows affected (0.02 sec)

3番目の呼び出しでは、ユーザー定義変数は値30を保持し、30 + 10 =40のように10を追加しますが、ローカル変数は再び10で再初期化され、10 + 10=20のように10を追加します。

これで、すべてのプロシージャ呼び出しで、ローカル変数がNULLまたは私の場合のように他の値で再初期化されると言うことができます。デフォルト値は10です。これは、ローカル変数に値10を設定することを意味します。ユーザー定義変数はそうではありませんが、すべてのプロシージャ呼び出し。


  1. Cの静的変数

    静的変数は1回だけ初期化されます。コンパイラーは、プログラムが終了するまで変数を保持します。静的変数は、関数の内部または外部で定義できます。それらはブロックに対してローカルです。静的変数のデフォルト値はゼロです。静的変数は、プログラムが実行されるまで存続します。 これがC言語の静的変数の構文です static datatype variable_name = value; ここで データ型 − int、char、floatなどの変数のデータ型 変数名 −これはユーザーが指定した変数の名前です。 値 −変数を初期化するための任意の値。デフォルトではゼロです。 これがC言語の静的変数の

  2. PowerShellの変数

    コンピュータサイエンス(およびカジュアルコンピューティング)では、変数は、後で使用するために任意の情報を保持するメモリ内の場所です。つまり、データを出し入れするための一時的なストレージコンテナです。 Bashシェルでは、そのデータは単語(文字列)にすることができます 、コンピュータ用語で)または数値(整数 。 これまで(故意に)コンピューターで変数を使用したことはないかもしれませんが、おそらく人生の別の領域で変数を使用したことがあります。 「givemethat」や「lookatthis」などと言うときは、文法変数を使用しています(代名詞 )。 「これ」と「それ」の意味は、あなたが頭の中で描