Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Mariadb:赋值运算符(:=)不使用局部变量_Mysql_Variables_Stored Procedures_Mariadb_Variable Assignment - Fatal编程技术网

Mysql Mariadb:赋值运算符(:=)不使用局部变量

Mysql Mariadb:赋值运算符(:=)不使用局部变量,mysql,variables,stored-procedures,mariadb,variable-assignment,Mysql,Variables,Stored Procedures,Mariadb,Variable Assignment,Mariadb知识库解释了赋值运算符(:=)同时处理用户定义变量和局部变量 但当我做一些测试时,例如: delimiter // CREATE or replace PROCEDURE tst_PS_now() BEGIN declare varnow datetime(3); set varnow = (select now()); select 'result: ' ,varnow; END; // delimiter ; mysql:root> call tst_PS_now(

Mariadb知识库解释了赋值运算符(:=)同时处理用户定义变量和局部变量

但当我做一些测试时,例如:

delimiter //
CREATE or replace PROCEDURE tst_PS_now()
BEGIN 
declare varnow datetime(3);
set varnow = (select now());
select 'result: ' ,varnow;
END;
//
delimiter ;

mysql:root>  call tst_PS_now() ;
+----------+-------------------------+
| result:  | varnow                  |
+----------+-------------------------+
| result:  | 2020-10-26 16:13:44.000 |
+----------+-------------------------+
例2:

delimiter //
CREATE or replace PROCEDURE tst_PS_now()
BEGIN 
declare varnow datetime(3);
select varnow:=now();
select 'result: ' ,varnow;
END;
//
delimiter ;
错误1064(42000):您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以了解要在“:=now()附近使用的正确语法;在4号线

在第二个示例中,赋值应该与我的局部变量一起使用

我真的需要在存储过程中使用这种赋值。
我该怎么修?有什么想法吗?

您的第一个示例没有显示运算符。请尝试在运算符周围添加空格。所以
varnow:=now()可以很好地使用SET而不是select…这是您在第一个sp中使用的。从我所看到的情况来看,您可以将..选择到本地(声明的)变量中,或者对其进行设置,但是您不能使用select:=或select=tryed
varnow:=now()
为其赋值,并且无法工作。。。。。。似乎:=不起作用,尽管在Mariadb知识库中进行了解释。