mysql 存储过程之变量的定义

2020-05-20  本文已影响0人  SyKay

转自 mysql存储过程之变量的定义

mysql存储过程中declare 和set 定义变量:

使用set 或者select 直接赋值,变量名以@开头
例如: set @var=1;
可以在会话的任何地方声明,作用域是整个会话,称为会话变量,也是全局变量。

以declare关键字声明的变量,只能在存储过程中使用,称为存储过程变量。 这种变量需要设置变量类型,而且只存在 begin....end 这段内
例如:declare var1 int default 0 ;
主要用在存储过程中,或者是给存储传参数中。

两者区别:
在调用存储过程时,declare声明的变量都会别初始化为null,而会话变量(以@开头的变量)则不会再被初始化,在一个会话内只被初始化一次,之后是对上一次会话的计算结果,相当于这个会话的全局变量。在存储过程中,使用动态语句,预处理时,动态内容必须赋给一个会话变量。例:

set @v_sql= sqltext;
PREPARE stmt FROM @v_sql;  
EXECUTE stmt;     
DEALLOCATE PREPARE stmt;

select ....into .....直接将表内内容赋值到指定变量中
select name,bid into @a,@b from bank limit 1; 注意:变量名和字段名不能一致


存储过程:
存储过程将一段通用的操作封装在一起,这样在不同平台都可以通用了。
存储过程没有返回值,而且没有sql语句调用,只能是call 调用,而且不返回结果集,执行就执行了。

显示所有存储过程:
show procedure status;

删除指定存储过程:
drop procedure 存储过程名;

上一篇下一篇

猜你喜欢

热点阅读