我一直在将mssqldb迁移到mysql中,遇到了一个语法我在任何地方都找不到,需要这个帮助。所有的“mysql参数”问题都涉及“select*from mytable where id=@id”,但我在寻找以下语法:
SELECT @MyParam = MyValue FROM MyTable
“select myvalue from mytable”返回值,而运行上述@myparam查询返回空值。
从前面的回答中我看到,与mssql不同,mysql中的参数不是用任何数据类型预定义的。
我错过了什么?
谢谢
2条答案
按热度按时间htzpubme1#
将mssqlserver过程转换为mysql过程时,最好使用
DECLARE
.这个
@var
变量是用户定义的变量,作用域是过程。因此,如果您的过程调用其他过程,则变量值可能会更改,而局部变量不会更改。局部变量也有定义的类型。转换ms sql server语法
在mysql中,使用:
格式:
将从过程中产生一个额外的结果集,因此这可能是您不希望看到的。
你可以用
:=
使用时格式化SET
-用于显式设置变量值的命令。eqqqjvef2#
你需要使用
:=
运算符而不是=
,将值赋给SELECT
条款。前者是赋值运算符;后者是比较算子。但是,如果您正在使用
SET
子句,则可以使用=
或者:=
. 来自文档:对于set,=或:=可以用作赋值运算符。
更多文档:
以这种方式做作业时(使用
SELECT
),必须使用:=作为赋值运算符;=在set以外的语句中被视为比较运算符。