MySQL:在存储过程中将多个字段选择为多个变量

MySQL:在存储过程中将多个字段选择为多个变量,sql,mysql,stored-procedures,sql-function,Sql,Mysql,Stored Procedures,Sql Function,我可以在MySQL中的同一个SELECT查询中将多个列选择为多个变量吗 例如: DECLARE iId INT(20); DECLARE dCreate DATETIME; SELECT Id INTO iId, dateCreated INTO dCreate FROM products WHERE pName=iName; 正确的语法是什么?您的语法不太正确:您需要在INTO之前按顺序列出字段,在INTO之后列出相应的目标变量: SELECT Id, dateCreated INTO

我可以在MySQL中的同一个SELECT查询中将多个列选择为多个变量吗

例如:

DECLARE iId INT(20);
DECLARE dCreate DATETIME;

SELECT Id INTO iId, dateCreated INTO dCreate 
FROM products
WHERE pName=iName;
正确的语法是什么?

您的语法不太正确:您需要在INTO之前按顺序列出字段,在INTO之后列出相应的目标变量:

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

除了Martin的答案之外,您还可以在查询末尾添加INTO部分,以使查询更具可读性:

SELECT Id, dateCreated FROM products INTO iId, dCreate

=============建议==========

@马丁·克莱顿的回答是正确的,但这只是一个建议

请避免在存储过程中使用不明确的变量

例如:

SELECT Id, dateCreated
INTO id, datecreated
FROM products
WHERE pName = iName
SELECT Id, dateCreated
INTO val_id, val_datecreated
FROM products
WHERE pName = iName
上述示例将导致错误(空值错误)

下面给出的例子是正确的。我希望这是有意义的

例如:

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

您还可以通过引用该表来明确它们,如:

[信贷:]


+1.在这种情况下,T-SQL语法更清晰。将它们作为单独的列表会导致与DECLARE CURSOR和FETCH相同的维护问题(不是我,呃,曾经使用过它们)。Pl/Sql也是如此。您还可以通过引用表来明确它们,如:
SELECT p.Id,p.dateCreated INTO Id,datecreated FROM products p,其中pName=iName
@KusalDissanayake该问题是针对MySQL提出的