ホームページ > データベース > mysql チュートリアル > MySQL の @variable と変数: 違いは何ですか?

MySQL の @variable と変数: 違いは何ですか?

Barbara Streisand
リリース: 2025-01-21 13:52:11
オリジナル
215 人が閲覧しました

@variable vs. variable in MySQL: What's the Difference?

MySQL 変数の型の比較: @variablevariable

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 は呼び出し全体での値の変更を蓄積します。

結論

@variablevariable の違いを理解することは、効果的な MySQL 開発にとって重要です。これにより、スコープと初期化動作に基づいて変数を適切に管理できるようになり、コードの効率と精度が確保されます。

以上がMySQL の @variable と変数: 違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート