MySQL:在存储过程中选择多个字段到多个变量中
Posted
技术标签:
【中文标题】MySQL:在存储过程中选择多个字段到多个变量中【英文标题】:MySQL: Selecting multiple fields into multiple variables in a stored procedure 【发布时间】:2011-01-27 21:01:46 【问题描述】:我可以在 mysql 的同一个选择查询中将多个列选择到多个变量中吗?
例如:
DECLARE iId INT(20);
DECLARE dCreate DATETIME;
SELECT Id INTO iId, dateCreated INTO dCreate
FROM products
WHERE pName=iName;
正确的语法是什么?
【问题讨论】:
【参考方案1】:你的syntax不太对:你需要在INTO之前依次列出字段,之后是对应的目标变量:
SELECT Id, dateCreated
INTO iId, dCreate
FROM products
WHERE pName = iName
【讨论】:
+1。这是 T-SQL 语法更清晰的情况。将这些作为单独的列表会导致与 DECLARE CURSOR 和 FETCH 相同的维护问题(不是我,呃,曾经使用过这些)。 Pl/Sql 也一样。【参考方案2】:==========建议==========
@martin Clayton 答案是正确的,但这只是一个建议。
请避免在存储过程中使用不明确的变量。
例子:
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
【讨论】:
您也可以通过引用表格使它们明确,例如:SELECT p.Id, p.dateCreated INTO id, datecreated FROM products p WHERE pName = iName
【参考方案3】:
除了 Martin 的回答,您还可以在查询末尾添加 INTO 部分以使查询更具可读性:
SELECT Id, dateCreated FROM products INTO iId, dCreate
【讨论】:
@KusalDissanayake 这个问题是针对 MySQL 提出的以上是关于MySQL:在存储过程中选择多个字段到多个变量中的主要内容,如果未能解决你的问题,请参考以下文章