mysql存储过程中,定义变量有两种方式:
1.使用set或select直接赋值,变量名以 @ 开头.
例如:set @var=1;
可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量。

2.以 DECLARE 关键字声明的变量,只能在存储过程中使用,称为存储过程变量,例如:
DECLARE var1  INT DEFAULT 0;  
主要用在存储过程中,或者是给存储传参数中。

两者的区别是:
在调用存储过程时,以DECLARE声明的变量都会被初始化为 NULL。而会话变量(即@开头的变量)则不会被再初始化,在一个会话内,只须初始化一次,之后在会话内都是对上一次计算的结果,就相当于在是这个会话内的全局变量。

在存储过程中,使用动态语句,预处理时,动态内容必须赋给一个会话变量。
例:
set @v_sql= sqltext;
PREPARE stmt FROM @v_sql;  
EXECUTE stmt;     
DEALLOCATE PREPARE stmt;

最新文章

  1. Cmder--Windows下命令行利器
  2. [ACM] poj 1064 Cable master (二分查找)
  3. 如何解决链入js,innerHTML中文乱码问题呢?
  4. SQL查询表占用空间大小
  5. C# .Net三层架构[转]
  6. 2016-2017 CT S03E02: Codeforces Trainings Season 3 Episode 2
  7. 腾讯云无法绑定公网IP问题解释与解决方案。
  8. SNS团队Beta阶段第一次站立会议(2017.05.22)
  9. Symbol(第6种基本数据类型)
  10. 关于移动端的UI事件分类
  11. web api 安全
  12. 编写 python 小程序,将LOL官网的皮肤保存下来,上传百度云,记录那些强撸灰飞烟灭的日子
  13. operator new,new operator,placement new的区别
  14. 获取解码字符串指定位置的数值 Decoded String at Index
  15. leetcode1008
  16. 【Coursera】支持向量机
  17. tcp发送缓冲区中的数据都是由产生数据的进程给推送到ip层还是有定时任务触发?
  18. 64_c2
  19. Jumpserver web界面跳板机
  20. 图解Transformer

热门文章

  1. 解压zip,解决中文乱码
  2. JS 运算、判断优化
  3. OpenERP登录页面调整
  4. 〖Android〗查找Android中的/system/lib中增加的lib文件是否在apk文件中
  5. 几种通讯协议的比较RMI > Httpinvoker >= Hessian >> Burlap >> web service (转)
  6. HBase源代码分析之HRegionServer上MemStore的flush处理流程(一)
  7. Linux命令-帮助命令:help
  8. JAVA中的抽象类与接口
  9. C#:TextBox控件操作类
  10. 翻翻git之---给传统的搜索增添友好动画 JJSearchViewAnim