1. ホーム
  2. mysql

[解決済み] MySQLのDECLAREでSELECT INTO変数を使用すると構文エラーが発生する?

2023-01-23 12:03:52

質問

ある変数に一つの値をSELECTしたい。以下のように試してみました。

DECLARE myvar INT(4);

-- すぐに何らかの構文エラーを返します。

SELECT myvalue 
  FROM mytable 
 WHERE anothervalue = 1;

-- 1つの整数を返します。

SELECT myvalue 
  INTO myvar 
  FROM mytable 
 WHERE anothervalue = 1;

-- は動作しません。また、@myVarも試してみました。

ストアドプロシージャや関数の外でDECLAREを使用することは可能でしょうか?

ユーザー変数の概念を理解していないだけかもしれませんが...。今試してみました。

SELECT myvalue INTO @var FROM `mytable` WHERE uid = 1;
SELECT @var;

...これは、想定されたとおりに動作しました。しかし、一度にそれぞれのクエリを実行すると、@var NULLが得られます。

どのように解決するのですか?

最終的には、ストアドプロシージャで解決しました。

以下はその結果です。

DELIMITER //

CREATE PROCEDURE test ()
BEGIN
  DECLARE myvar DOUBLE;
  SELECT somevalue INTO myvar FROM mytable WHERE uid = 1;

  SELECT myvar;
END//

DELIMITER ;

call test();