我可以在MySQL中的同一选择查询中将多个列选择为多个变量吗?MySQL:在存储过程中将多个字段选择为多个变量
例如:
DECLARE iId INT(20);
DECLARE dCreate DATETIME;
SELECT Id INTO iId, dateCreated INTO dCreate
FROM products
WHERE pName=iName;
,这是什么正确的语法?
我可以在MySQL中的同一选择查询中将多个列选择为多个变量吗?MySQL:在存储过程中将多个字段选择为多个变量
例如:
DECLARE iId INT(20);
DECLARE dCreate DATETIME;
SELECT Id INTO iId, dateCreated INTO dCreate
FROM products
WHERE pName=iName;
,这是什么正确的语法?
你syntax是不完全正确:你需要的INTO之前列出字段顺序,以及相应的目标变量之后:
SELECT Id, dateCreated
INTO iId, dCreate
FROM products
WHERE pName = iName
或者马丁的回答,您还可以添加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
你也可以让他们明确通过引用表,如:
[来源:maganap]
SELECT p.Id, p.dateCreated INTO id, datecreated FROM products p
WHERE pName = iName
+1。这是T-SQL语法更清晰的情况。将这些作为单独的列表导致与DECLARE CURSOR和FETCH相同的维护问题(不是我,呃,曾经使用过这些)。 – harpo 2012-01-25 19:08:37
同样适用于Pl/Sql。 – 2016-12-19 15:30:45