MySQL存储过程把执⾏结果保存在变量中
在MySQL存储过程中若需要把执⾏的结果保存在变量中,可以使⽤into 关键字。但使⽤普通语句和预处理语句的保存⽅式不⼀样。1)普通语句
create procedure proc_var02()
begin
declare create_time datetime;
select now() into create_time;
select create_time;
end;
普通的语句使⽤这种⽅式是没有问题的,可以直接赋值成功。
2)预处理语句
错误写法:
create procedure proc_var02()
begin
declare create_time datetime;
set @stmt = concat('select now() into', create_time);
prepare stmt from @stmt;
execute stmt;
deallocate prepare stmt;
select create_time;
end;
创建后调⽤此存储过程,会出现错误
call proc_var02()
> 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1 > 时间: 0s
正确写法:
create procedure proc_var02()
begin
mysql存储过程使用set @stmt = concat('select now() into @create_time');
prepare stmt from @stmt;
execute stmt;
deallocate prepare stmt;
select @create_time;
end;
需使⽤⽤户变量进⾏接收,不能使⽤局部变量。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论