首页 > 解决方案 > MySQL选择变量不总是工作

问题描述

我正面临一种奇怪的行为。

SELECT INTO 和 SET 两者都适用于某些变量而不适用于其他变量。事件语法相同。

SET @Invoice_UserId :=  (SELECT UserId FROM invoice WHERE InvoiceId = @Invoice_Id  LIMIT 1); -- Working
SET @myamount := (SELECT amount FROM invoice WHERE InvoiceId = @Invoice_Id LIMIT 1); - Not working
SELECT  Amount INTO @myamount FROM invoice WHERE InvoiceId = 29  LIMIT 1; - Not working

如果我直接运行这些查询然后可以工作,但不能在存储过程中工作。

标签: mysql

解决方案


所有语法都是有效的并且可以工作(除了-应该是--.

如果您有问题,请发布完整的存储过程。

在存储过程中,您应该使用局部变量 ( DECLARE var) 而不是用户定义的变量 ( @var),因为局部变量是强类型的并且具有例程的范围。


推荐阅读