select結果をセッション変数に格納

(8.0.22)

https://www.wakuwakubank.com/posts/493-mysql-user-var/

set @val := (select col1 from tab1);
又は
select @val := col1 from tab1;

select @val;

※データが2件以上の場合は下記エラーとなる
ERROR 1242 (21000): Subquery returns more than 1 row

 

(19c)

column col1 new_value val
select col1 from tab1;

select &val from dual;

※データが2件以上の場合は最後に取得した値がセットされる

 

(13)
https://qiita.com/noborus/items/f2954c4767ebcb5e52a4

select col1 val from tab1;
\gset

select :val;


※データが2件以上の場合は下記エラーとなる
\gset に対して複数の行が返されました

 

 

(2019)
https://docs.microsoft.com/ja-jp/sql/relational-databases/system-stored-procedures/sp-set-session-context-transact-sql?view=sql-server-ver15


通常のユーザ変数はバッチやストアドの終了時点で参照できなくなるため、セッションコンテキストを使用する

declare @val int;
set @val = ( select col1 from tab1 );
exec sys.sp_set_session_context @key = N'key', @value = @val;

select session_context(N'key');


※データが2件以上の場合は下記エラーとなる
サブクエリは複数の値を返しました。サブクエリが =、!=、<、<=、>、>= の後に続く場合や、サブクエリが 1 つの式として使われる場合は複数の値は許可されません。