zoukankan      html  css  js  c++  java
  • mysql -- 存储过程中 declare 和 set 定义变量的区别

    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;

  • 相关阅读:
    jsonp跨站请求
    ModelForm验证实例
    ModelForm验证笔记
    Form验证实例
    Form验证笔记
    模板导入_分页_cookie_装饰器_实例
    k8s的ingress资源简述
    k8s资源配置清单的书写格式(yaml文件)
    k8s的service简述
    k8s的Pod控制器
  • 原文地址:https://www.cnblogs.com/hf8051/p/4607137.html
Copyright © 2011-2022 走看看