精华内容
下载资源
问答
  • 2021-01-18 23:22:30

    MySQL变量定义和赋值是我们经常会遇到的问题,下面就为您接受如何在存储过程中MySQL变量定义和赋值,希望对您学习MySQL变量定义方面能有所启迪。

    一、MySQL变量的定义

    mysql变量定义用declare来定义一局部变量,mysql 存储过程中变量的定义与赋值操作,该变量的使用范围只能在begin...end 块中使用,变量必需定义在复合语句的开头,并且系在其它语句之前,expr为值或者返回值的表达式,可使任何MySQL支持的返回值的表达式。一次可为多个变量赋值,也可同时申明多个变量,如该要,可使用default赋默认值。

    定义一个MySQL变量语法如下:

    declare var_name[,...] type[default value]看一个变量定义实例

    declare last date;

    二、mysql存储过程变量赋值

    变量的赋值可直接赋值与查询赋值来操作,直接赋值可用set来操作,可系常量或表达式如下

    set var_name= [,var_name expr]...

    给上面的last变量赋值方法如下

    set last = date_sub( current_date(),interval 1 month);

    下面看通过查询给变量赋值,要求查询返回的成果必需为一行,具体操作如下

    select col into var_name[,...] table_expr。

    create function get _cost(p_custid int,p_eff datetime)

    return decimal(5,2)

    deterministic

    reads sql data

    begin

    declare v_pay decimail(5,2);

    select ifnull( sum(pay.amount),0) into vpay from payment where pay.payd<=p_eff and pay.custid=pid

    reutrn v_rent + v_over - v_pay;

    end $$

    好了,这篇简单的存储过程中变量的定义赋值教程就到这了。

    【编辑推荐】

    【责任编辑:段燃 TEL:(010)68476606】

    点赞 0

    更多相关内容
  • 一、变量定义 mysql中变量定义用declare来定义...二、mysql存储过程变量赋值 变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set来操作,可以是常量或表达式如果下 代码如下: set var_name= [,var_name expr]
  • 用户可以使用关键字DECLARE来定义变量,然后为变量赋值。这些变量的作用范围是在BEGIN…END程序段中。 定义变量 在MySQL中,可以使用DECLARE关键字来定义变量定义变量的基本语法如下: DECLARE var_name[,…]...

    目录

    一、在存储过程中定义变量

    1.定义变量 

    2.为变量赋值

      ①使用set关键词赋值

      ②使用SELECT…INTO语句为变量赋值

    二、使用@创建用户变量 


    一、在存储过程中定义变量

        在存储过程和函数中,可以定义和使用变量。用户可以使用关键字DECLARE来定义变量,然后为变量赋值。这些变量的作用范围是在BEGIN…END程序段中。 

    1.定义变量 

        在MySQL中,可以使用DECLARE关键字来定义变量。定义变量的基本语法如下: 

    DECLARE var_name[,…] type [DEFAULT value]
    • 关键字DECLARE是用来声明变量的;
    • 参数var_name是变量的名称,可以同时定义多个变量;
    • 参数type用来指定变量的类型;
    • DEFAULT value子句将变量默认值设置为value,没有使用DEFAULT子句时,默认值为NULL。 

        定义变量cid,数据类型为INT型,默认值为10,代码如下: 

    declare cid int default 10;

    2.为变量赋值

      ①使用set关键词赋值

          SET语句的基本语法如下: 

    SET var_name=expr[,var_name=expr]…  #可以是确定值,也可以是表达式
    • 关键字SET用来为变量赋值;
    • 参数var_name是变量的名称;
    • 参数expr是赋值表达式。一个SET语句可以同时为多个变量赋值,各个变量的赋值语句之间用逗号隔开。 

        例如,将变量temp_id赋值为88,代码如下: 

    set temp_id=88;

    ②使用SELECT…INTO语句为变量赋值

          其基本语法如下:

    SELECT col_name[,…] INTO var_name[,…]     
         FROM table_name WHERE condition  
    • 参数col_name表示查询的字段名称;
    • 参数var_name是变量的名称;
    • 参数table_name指表的名称;
    • 参数condition指查询条件。 

        在下面student表和class表创建存储过程proc_query_student, 要求输入学生id,返回学生所在班级以及班级人数:

    delimiter $$
    create procedure proc_query_student(in sid int,out cname varchar(64),out ccount int)
    begin
        declare temp_cid int;
        declare temp_cname varchar(64);
        declare temp_ccount int;
        select class_id into temp_cid from student where id=sid;
        select name,count into temp_cname,temp_ccount from class where id=temp_cid;
        set cname=temp_cname,ccount=temp_ccount;
    end;
    $$
    
    mysql> delimiter ;

    二、使用@创建用户变量 

        使用@关键字创建“用户变量”,“用户变量的作用范围”在整个当前对话中,其语法形式如下:

    @ var_name;

        例如创建“用户变量”调用上面的存储过程,并使用select语句查看变量:

    call proc_query_student(3,@name,@count);
    select @name,@count;

        查询结果:

    🍀🍀🍀🍀🍀🍀🍀🍀

    展开全文
  • 简单记录一下存储过程变量与赋值。 1.局部变量: 作用范围:用户自定义,在begin/end块中有效。 语法: 声明局部变量: declare var_name type [default var_value]; 举例:declare nickname varchar(32); eg: -...

    简单记录一下存储过程的变量与赋值。

    1.局部变量:
    作用范围:用户自定义,在begin/end块中有效。

    语法:
    声明局部变量: declare var_name type [default var_value];
    举例:declare nickname varchar(32);

    eg:

    -- set赋值
    delimiter $$
    create procedure sp_var01()
    begin
        declare nickname varchar(32) default 'unkown';
        set nickname = 'ZS';
        -- set nickname := 'SF';
        select nickname;
    end$$
    

    利用into进行赋值:

    -- into赋值
    delimiter $$
    create procedure sp_var_into()
    begin
        declare emp_name varchar(32) default 'unkown' ;
        declare emp_no int default 0;
        select e.empno,e.ename into emp_no,emp_name from emp e where e.empno = 7839;
        select emp_no,emp_name;
    end$$
    

    2.用户变量:
    作用范围: 用户自定义,当前会话(连接)有效.

    语法:
    @var_name
    不需要提前声明,使用即声明

    eg:

    -- 赋值
    delimiter $$
    create procedure sp_var02()
    begin
        set @nickname = 'ZS';
        -- set nickname := 'SF';
    end$$
    call sp_var02() $$
    select @nickname$$  --可以看到结果
    

    3.会话变量:
    作用范围: 由系统提供,当前会话(连接)有效。

    语法:
    @@session.var_name

    eg:

    show session variables; -- 查看会话变量
    select @@session.unique_checks; -- 查看某会话变量
    set @@session.unique_checks = 0; --修改会话变量
    

    4.全局变量:
    作用范围: 由系统提供,整个mysql服务器有效。

    语法:
    @@global.var_name

    eg:

    -- 查看全局变量中变量名有char的记录
    show global variables like '%char%'; 
    
    -- 查看全局变量character_set_client的值
    select @@global.character_set_client; 
    

    举例四种形式的变量之间相互赋值:

    -- 设置$$为结束符
    DELIMITER $$
    
    -- 指定使用数据库
    USE stores$$
    
    -- 判空
    DROP PROCEDURE IF EXISTS variable_define$$
    
    -- 创建存储过程
    CREATE PROCEDURE variable_define()
    BEGIN
    	-- 局部变量 在begin/end中有效
    	DECLARE limitQuota VARCHAR(24) DEFAULT '额度总控';
    	
    	-- 用户变量,当前会话有效
    	SET @user_variable = '用户变量';
    	
    	-- 会话变量,由系统提供,当前会话(连接)有效
    	SELECT @@session.unique_checks; -- 查看某会话变量
    	SET @@session.unique_checks = 0; -- 修改会话变量
    	
    	-- 全局变量,由系统提供,整个mysql服务器有效
    	SET @@global.character_set_client='test'; 
    	
    	-- 用set,将户变量赋值给局部变量,其它的就不举例子了
    	SET limitQuota=@user_variable;
    	SELECT limitQuota;
    	
    END$$
    
    DELIMITER ; -- 此语句可以缺省,将结束符置空,推荐置空写法
    
    -- 调用存储过程
    CALL variable_define();
    

    存储过程的输入输出请参看我的另一篇blog:存储过程的输入输出概述

    展开全文
  • 存储过程变量定义的几种方法

    千次阅读 2019-08-01 20:22:20
    在mysql存储过程定义变量有3种方式 declare,set,select 1.declare declare 变量名 变量类型 default 默认值; 如:DECLARE a VARCHAR(255) DEFAULT ‘C’; declare定义的变量 相当于一个局部变量 declare只能在...

    在mysql存储过程中定义变量有3种方式 declare,set,select

    1.declare
    declare 变量名 变量类型 default 默认值;
    如:DECLARE a VARCHAR(255) DEFAULT ‘C’;
    declare定义的变量 相当于一个局部变量 declare只能在begin,end中定义。

    2.set
    此处的变量不需要声明,mysql会自动根据值类型来确定类型,这种变量要在变量名称前面加上“@”符号,叫做会话变量,代表整个会话过程他都是有作用的,这个有点类似于全局变量一样。

    DROP PROCEDURE IF EXISTS my_pro;
    delimiter $ #将delimiter设置为$
    CREATE PROCEDURE my_pro()
    BEGIN
    set @a=‘B’;#或者@:a='B’也可以
    SELECT*from eq WHERE type=@a;
    END $ #这里一定要与前面的$符号对应,前面如果写成//,则这里也要写成//
    delimiter;
    CALL my_pro();

    需要注意的事项
    a. 变量定义时,也可以写成@:a=‘B’,注意上面两种赋值符号,使用set时可以用“=”或“:=”,但是使用select时必须用“:=赋值”

    3、select
    select有两种写法
    第一种:与set一样,select @a:=‘B’;
    第二种: select @a:=字段名 from 表名 where ……
    或 select 字段名 into a from 表名 where ……

    注意事项:
    在写存储过程时一定要注意delimiter的用法,由于被坑过很多次,这里专门说明一下。delimiter就是代表分号,分隔符的意思.
    Q1:为什么设置delimiter?
    大家应该记得在交互的时候只要一出现分号; 你之前输入的语句就会直接执行了,但有时我们不希望MySQL这样做,我们需要继续输入别的语句,此时delimiter就发挥了作用,我们将本来默认的delimiter ; 改为别的符号,例如delimiter //或$(注意不可以用) ,写了此语句后MySQL在看到//才会运行这些语句。

    ps:但是我试了一下mysql5.7版本的,不用写delimeter好像也没有报错,可能之前的版本必须写吧

    展开全文
  • 存储过程中的变量定义

    千次阅读 2021-01-21 13:14:38
    MySQL存储过程常见的变量:局部变量、用户变量、系统变量……一、局部变量过程体中,可以声明局部变量,用来临时保存一些值。1、定义局部变量语法:DECLARE var_name[, var_name] ... type [DEFAULT value];其中,...
  • 1.局部变量 用户自定义,在begin/end块中有效 语法:declare 变量名 数据类型 [default 默认值] 举例:declare name varchar(10); delimiter $ create procedure func() begin declare name varchar(10) ...
  • 下面小编就为大家带来一篇浅谈MySQL存储过程中declare和set定义变量的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 在mysql存储过程定义变量有三种方式 declare,set,select 1.declare declare 变量名 变量类型 default 默认值; declare a int DEFAULT 2; declare定义的变量 相当于一个局部变量 在end之后失效,...
  • mysql存储过程中declare 和set 定义变量的区别:->使用set 或者select 直接赋值,变量名以@开头例如: set @var=1;可以在会话的任何地方声明,作用域是整个会话,称为会话变量,也是全局变量。->以declare...
  • MySQL存储过程变量定义

    千次阅读 2018-10-03 09:27:18
    在mysql存储过程也可以定义自己的变量,那么MySQL存储过程如何定义变量呢? 要在存储过程中声明一个变量,可以使用DECLARE语句 DECLARE variable_name datatype(size) DEFAULT default_value; MySQL允许您使用单个...
  • 用户可以使用关键字DECLARE来定义变量,然后为变量赋值。这些变量的作用范围是在BEGIN…END程序段中。 1. 定义变量 在MySQL中,可以使用DECLARE关键字来定义变量定义变量的基本语法如下: DECLARE var_name[,…] ...
  • MySql 储存过程 变量定义和赋值

    千次阅读 2020-09-30 10:36:19
    MySQL 5.0 版本开始支持存储过程存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。...解释:variable_name 是定义变量的名称(可以定义多个变量逗号分隔),data.
  • 一.首先变量的声明有3中方式 ...注:存储过程中声明变量必须在begin之前 并且声明字符串时必须指定大小,不然会报错 2.使用%TYPE声明 ①格式:变量名 表名.字段名%TYPE ②含义:该变量的数据类型与指定...
  • 1.定义变量,赋值,... -- 如果proc_first存在就删除create procedure proc_first()-- 创建存储过程begin-- 定义变量DECLARE age INT;-- 赋值set age = 23;select age;end;-- 执行call proc_first;1.定义变量,赋...
  • -- Mysql 存储过程/*set @result = 0;create procedure login(-- 定义参数,有in、out、inout三种类型in user varchar(10),in pass varchar(10),out result int)begindeclare passd varchar(10);-- declare 声明临时...
  • 变量 系统变量 系统提供,是服务器提供的 #使用语法 #查看系统所有变量 show global/*全局*/|session/*会话,不写也可以当作查看会话变量*/ variables #查看满足条件的部分系统变量 show global|session variables ...
  • 全Sql语句创建 例如执行以上sql即可创建 2.Navicat中创建 第一步,函数右键 → 新建函数 第二步,填写存储过程名字,选择过程,点完成 第三步,定义存储过程 三、Mysql存储过程中输入参数 CREATE DEFINER=`root`@`%`...
  • oracle 存储过程定义变量

    千次阅读 2014-11-15 14:43:31
    create or replace procedure proc1 is p_name sut.name%type; begin select name into p_name from sut where id='12072226'; dbms_output.put_line(p_name); end proc1; / ...注意定义方式
  • oracle存储过程----变量的介绍及使用(PL/SQL)

    万次阅读 多人点赞 2018-08-17 08:16:00
    oracle存储过程—-变量的介绍及使用   学习一门语言,既然学会了hello word 的输出,那就要关注下基础,首先要熟悉存储过程 中的变量类型。   关于存储过程变量有哪些 ,这样的问题,我在百度上搜索,却发现很...
  • 昨天我们讲了mysql存储过程创建修改与删除,下面我们这篇教程是讲关于mysql存储过程变量定义赋值操作哦。一、变量定义 mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end块中使用...
  • CREATE DEFINER=`root`@`localhost` PROCEDURE `test`() BEGIN #Routine body goes here...程序体从这里开始 DECLARE v_a VARCHAR(10); #set @ v_a = '打印内容' 这部分都是 注释部分 SET v_a = 'i try it';...
  • 变量类型 ...过程变量 BEGIN DECLARE a,b,c INT DEFAULT 0; #定义以及定义默认值 SET a = 100; #赋值 : 限于自身过程使用 SELECT a,b,c; END 会话变量 有效范围 : 全部会话内有效(包括子会话) 用cal...
  • 将select查询的结果存入到定义变量中 declare V_tno sutdent.stuno%TYPE; --创建变量存储学生学号 V_tnsex varchar2(6); --创建变量存储学生性别 V_tname varchar2(30); --创建变量存储学生姓名 begin ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,227,992
精华内容 491,196
关键字:

存储过程的定义变量