web-dev-qa-db-ja.com

クエリから変数の結果を設定します

ストアドプロシージャを作成するときに、変数を作成できますか?例えば:

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 を使用できます。

49
Roland Bouman

次のselectステートメントを使用すると、count(*)からの結果を保存できます。

SELECT COUNT(*) FROM mytable INTO some_var;
8
juergen d