mysql - 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
如果我直接运行这些查询然后可以工作,但不能在存储过程中工作。
解决方案
所有语法都是有效的并且可以工作(除了-
应该是--
.
如果您有问题,请发布完整的存储过程。
在存储过程中,您应该使用局部变量 ( DECLARE var
) 而不是用户定义的变量 ( @var
),因为局部变量是强类型的并且具有例程的范围。
推荐阅读
- r - 根据值对向量进行排序
- python - 无法导入 Python 模块,因为“sys.path”和“sys.executable”存在差异
- python - 如何正确结束 Python 中的 if else 语句(寻宝游戏问题)?
- java - 使用 CMU Sphinx 的 Java 实时语音识别器中的 IllegalArgumentException
- javascript - 如何使用 html css 制作工具提示框阴影
- javascript - 计算 JSON API 结果的最大值和平均值
- javascript - 在 Typescript 模块中导入 npm/buffer 包
- android - 世博人脸检测角度
- java - 如何在Java中正确初始化静态数组字段
- sql - 简单查询的问题