MySQL 変数の型の比較: @variable
と variable
MySQL は、ユーザー定義変数とセッションレベルのユーザー定義変数の 2 種類の変数を提供します。後者は @
記号 (@variable
) で始まりますが、前者は記号 (variable
) で始まりません。
ユーザー定義変数
このような変数は大まかに型付けされており、セッション全体を通じてその値を保持します。これらは、SET
ステートメントを使用してストアド プロシージャの外部で作成されます。例:
<code class="language-sql">SET @var = 1;</code>
セッションレベルのユーザー定義変数
ユーザー定義変数とは異なり、これらの変数は現在のセッションでのみ表示されます。これらはストアド プロシージャで宣言され、パラメータとして渡されます。例:
<code class="language-sql">CREATE PROCEDURE prc_test(var INT) BEGIN DECLARE var2 INT; SET var2 = 1; END;</code>
主な違い
これら 2 つの変数タイプの主な違いは、スコープと初期化方法です。プロシージャ変数はプロシージャが呼び出されるたびに NULL
に再初期化されますが、セッションレベル変数はプロシージャ呼び出し全体で値を保持します。次のコード スニペットはこれを示しています:
<code class="language-sql">CREATE PROCEDURE prc_test() BEGIN DECLARE var2 INT DEFAULT 1; SET var2 = var2 + 1; SET @var2 = @var2 + 1; END; SET @var2 = 1;</code>
出力例:
var2 | @var2 |
---|---|
2 | 2 |
2 | 3 |
2 | 4 |
ご覧のとおり、var2
は毎回再初期化されますが、@var2
は呼び出し全体での値の変更を蓄積します。
結論
@variable
と variable
の違いを理解することは、効果的な MySQL 開発にとって重要です。これにより、スコープと初期化動作に基づいて変数を適切に管理できるようになり、コードの効率と精度が確保されます。
以上がMySQL の @variable と変数: 違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。