ストアドプロシージャを作成するときに、変数を作成できますか?例えば:
CREATE PROCEDURE `some_proc` ()
BEGIN
DECLARE some_var INT;
SET some_var = 3;
....
質問:しかし、クエリから変数の結果を設定する方法、それは次のようなものを作る方法です:
DECLARE some_var INT;
SET some_var = SELECT COUNT(*) FROM mytable ;
?
これを行うには複数の方法があります。
サブクエリを使用できます:
SET some_var = (SELECT COUNT(*) FROM mytable);
(元のように、クエリの周りに括弧を追加するだけです)
または、SELECT INTO構文を使用して複数の値を割り当てます。
SELECT COUNT(*), MAX(col)
INTO some_var, some_other_var
FROM tab;
サブクエリの構文は少し高速ですが(理由はわかりません)、単一の値を割り当てる場合にのみ機能します。 select into構文を使用すると、一度に複数の値を設定できるため、クエリから複数の値を取得する必要がある場合は、変数ごとにクエリを繰り返し実行するのではなく、それを行う必要があります。
最後に、クエリが単一行ではなく結果セットを返す場合、 cursor を使用できます。
次のselectステートメントを使用すると、count(*)からの結果を保存できます。
SELECT COUNT(*) FROM mytable INTO some_var;