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

MySQLストアドプロシージャ内の変数のスコープとはどういう意味ですか?


BEGIN / ENDブロック内で変数を宣言すると、この変数のスコープはこの特定のブロックになります。同じ名前の変数を別のBEGIN/ENDブロック内で宣言することもできます。これは完全に有効ですが、そのスコープはBEGIN/ENDブロック内にあります。変数のスコープを表示するプロシージャを作成している次の例の助けを借りて理解することができます-

mysql> Create Procedure Scope_variables()
    -> BEGIN
    -> DECLARE A Varchar(5) Default 'outer';
    -> BEGIN
    -> DECLARE A Varchar(5) Default 'inner';
    -> SELECT A;
    -> END;
    -> SELECT A;
    -> END;
    -> //
Query OK, 0 rows affected (0.08 sec)

上記の手順では、同じ名前の2つの変数があります。つまりAです。ここでは、スコープ内にある限り、内部変数宣言が優先されます。重要なのは、最初のENDに達すると内部変数が消え、「OUTOFSCOPE」と呼ばれることです。概念を理解するには、次のようにこの手順を呼び出します-

mysql> CALL Scope_variables();
+-------+
| A     |
+-------+
| inner |
+-------+
1 row in set (0.00 sec)

+-------+
| A     |
+-------+
| outer |
+-------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

  1. MySQLストアドプロシージャ内に動的SQLクエリを実装しますか?

    ストアドプロシージャでの動的SQLクエリの場合は、PREPARESTATEMENTの概念を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable2033    -> (    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> Name varchar(20)    -> ); Query OK, 0 rows affected (1.61 sec) 挿入コマンド-を使用して、テーブ

  2. 変数の動的初期化とはどういう意味ですか?

    オブジェクトの動的初期化とは、実行時にオブジェクトを初期化することを指します。つまり、オブジェクトの初期値は実行時に提供されます。動的初期化は、コンストラクターを使用し、パラメーター値をコンストラクターに渡すことで実現できます。このタイプの初期化は、実行時にクラス変数を初期化するために必要です。 なぜ動的初期化が必要なのですか? オブジェクトの動的初期化が必要です メモリを効率的に利用します。 オーバーロードされたコンストラクターを使用して、さまざまな初期化形式を提供できます。 状況を考慮して、実行時にさまざまな形式のデータを使用できる柔軟性があります。 サンプルコー