web-dev-qa-db-ja.com

MySQL:ストアドプロシージャの複数の変数への複数のフィールドの選択

MySQLの同じ選択クエリ内で複数の列を複数の変数に選択できますか?

例えば:

DECLARE iId INT(20);
DECLARE dCreate DATETIME;

SELECT Id INTO iId, dateCreated INTO dCreate 
FROM products
WHERE pName=iName;

これの正しい構文は何ですか?

92
aHunter

あなたの 構文 は正しくありません:INTOの前に順番にフィールドをリストし、その後に対応するターゲット変数をリストする必要があります:

SELECT Id, dateCreated
INTO iId, dCreate
FROM products
WHERE pName = iName
196
martin clayton

==========アドバイス==========

@martin clayton答えは正しいですが、これはアドバイスのみです。

ストアドプロシージャでのあいまいな変数の使用は避けてください。

例:

SELECT Id, dateCreated
INTO id, datecreated
FROM products
WHERE pName = iName

上記の例はエラー(null値エラー)を引き起こします

以下の例は正しいです。これが理にかなっていることを望みます。

例:

SELECT Id, dateCreated
INTO val_id, val_datecreated
FROM products
WHERE pName = iName

次のように、テーブルを参照することでそれらを明確にすることもできます。

[クレジット: maganap ]

SELECT p.Id, p.dateCreated INTO id, datecreated FROM products p 
WHERE pName = iName
9
sijo vijayan

Martinの答えの代わりに、クエリを読みやすくするために、クエリの最後にINTO部分を追加することもできます。

SELECT Id, dateCreated FROM products INTO iId, dCreate
2
ibai