精华内容
下载资源
问答
  • 存储过程表变量使用
    2021-01-18 19:54:16

    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  存储过程名 ;

    更多相关内容
  • 一、变量的定义 mysql中变量定义用declare来定义...二、mysql存储过程变量赋值 变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set来操作,可以是常量或表达式如果下 代码如下: set var_name= [,var_name expr]
  • 在函数和储存过程使用变量declear declear a int unsigned default 1; 这种变量需要设置变量类型 而且只存在在 begin..end 这段之内 select .. into.. 直接将内内容赋值到指定变量当中 select name,bid ...
  • SQL Server推荐使用 SET 而不是 SELECT 对变量进行赋值。当表达式返回一个值并对一个变量进行赋值时,推荐使用 SET 方法。下列出 SET 与 SELECT 的区别。请特别注意红色部分。   set select 同时对多个变量...
  • 1.表变量拥有特定作用域(在当前批处理语句中,但不在任何当前批处理语句调用的存储过程和函数中),表变量在批处理结束后自动被清除。 2.表变量较临时产生更少的存储过程重编译。 3.针对表变量的事务仅仅在更新
  • 简单记录一下存储过程变量与赋值。 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:存储过程的输入输出概述

    展开全文
  • 存储过程中的TOP后跟一个变量会如何? 代码如下: Create proc getWorkPlan2 (@intCounter int ,@lngUserID int) as select Top 5 lngWorkID,strWorkName,strExecHumanName,strBeginDate from worklist where ...
  • 存储过程使用变量存储过程和函数中,可以定义和使用变量。用户可以使用关键字DECLARE来定义变量,然后为变量赋值。这些变量的作用范围是在BEGIN…END程序段中。 1. 定义变量 在MySQL中,可以使用DECLARE...

    在存储过程中使用变量

    在存储过程和函数中,可以定义和使用变量。用户可以使用关键字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. 为变量赋值

    在MySQL中可以使用关键字SET来为变量赋值,SET语句的基本语法如下:

    SET var_name=expr[,var_name=expr]…
    

    其中,关键字SET用来为变量赋值;参数var_name是变量的名称;参数expr是赋值表达式。一个SET语句可以同时为多个变量赋值,各个变量的赋值语句之间用逗号隔开。
    例如,将变量tmp_id赋值为88,代码如下:

    SET tmp_id = 88;
    

    在MySQL中,还可以使用SELECT…INTO语句为变量赋值。其基本语法如下:

     SELECT col_name[,…] INTO var_name[,…]     
     FROM table_name WHERE condition         
    

    其中,参数col_name表示查询的字段名称;参数var_name是变量的名称;参数table_name指表的名称;参数condition指查询条件。

    【示例11-2】从表employee中查询id为3的记录,将该记录的id值赋给变量tmp_id,代码如下:

    SELECT id INTO tmp_id
    FROM grade WEHRE id=sid;
    
    mysql>  use school;   #选择数据库school                                             
    mysql>  drop  PROCEDURE if exists query_student_class_info;                                                                             
    mysql> DELIMITER $$                                                                                
    mysql> create procedure  query_student_class_info (IN sid int, OUT cname varchar(128), OUT ccount  int)                                   
            BEGIN   
                declare tmp_name varchar(128);
                declare tmp_count int;
                declare tmp_cid  int;
                select class_id into tmp_cid from student where id = sid;         
                select name, count into tmp_name, tmp_count from class where id = tmp_cid;
                set cname = tmp_name, ccount = tmp_count;
             END;    
             $$                                                                           
             DELIMITER ;                                                                 
    mysql>  call query_student_class_info(4, @name, @count);    #调用存储过程  
    mysql>  select @name, @count;
    

    具体操作

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    结语:

    时间: 2020-07-14

    展开全文
  • 存储过程使用变量存储过程和函数中,可以定义和使用变量。用户可以使用关键字DECLARE来定义变量,然后为变量赋值。这些变量的作用范围是在BEGIN…END程序段中。 定义变量 在MySQL中,可以使用DECLARE...
  • 1.局部变量 用户自定义,在begin/end块中有效 语法:declare 变量名 数据类型 [default 默认值] 举例:declare name varchar(10); delimiter $ create procedure func() begin declare name varchar(10) ...
  • 存储过程中的变量定义

    千次阅读 2021-01-21 13:14:38
    As we all know,MySQL的存储过程就类似于脚本,既然似脚本就会有使用变量的时候。MySQL存储过程常见的变量:局部变量、用户变量、系统变量……一、局部变量过程体中,可以声明局部变量,用来临时保存一些值。1...
  • oracle存储过程----变量的介绍及使用(PL/SQL)

    万次阅读 多人点赞 2018-08-17 08:16:00
      关于存储过程变量有哪些 ,这样的问题,我在百度上搜索,却发现很多没用的,最近在同事那里,忽然看到一本《oracle从入门到精通》,搜了一下,发现了存储过程 的东西,但是它却没有直接叫存储过程 ,人家叫PL/...
  • [转载]MySQL存储过程使用输出变量

    千次阅读 2021-01-18 18:53:07
    下面给出一个具体例子:在model数据库中创建如下:DROP TABLE IF EXISTS `model`.`model_director`;CREATE TABLE `model`.`model_director` (`model_id` int(11) NOT NULL,`director_id` int(11) NOT NULL,PRIMARY...
  • #使用语法 #查看系统所有变量 show global/*全局*/|session/*会话,不写也可以当作查看会话变量*/ variables #查看满足条件的部分系统变量 show global|session variables like '%char%' #查看指定的某个系统变量的值...
  • Kettle使用_9 存储过程与设置变量 需求: 通过传递给kettle位置参数的方式执行存储过程。其中存储过程的需求是往tb_user(字段user_id, name)里插入一条记录(覆盖式,即有则删除;参数是用户id和用户名)。 解决...
  • PROCEDURE "Test"--创建Test存储过程 is start_time date;--创建了两个变量,开始时间和结束时间 end_time date; begin start_time := sysdate;--执行开始时间,下面Test1()到Test7()全部都是存储过程,这样调用没...
  • mssql存储过程表名和字段名为变量的实现方法,需要的朋友可以参考下。
  • 存储过程变量定义的几种方法

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

    千次阅读 2019-01-03 10:24:49
    临时 CREATE TABLE `debug_tmp` (  `id` bigint(20) NOT NULL AUTO_INCREMENT,  `remark` varchar(500) DEFAULT NULL,  PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=771 DEFAULT ...存储过程使用...
  • 存储过程中常看到declare定义的变量和@set定义的变量。简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量。 1、declare定义的变量类似java类中的局部变量,仅在类中生效。即只在存储过程中的begin...
  • 存储过程使用临时变量表,使用的好可以提高速度,使用的不好,可能会起到反作用. 然后给了他几个示例让他自己去看,然后针对自己的数据库进行修改. 那么表变量一定是在内存中的吗?不一定. 通常情况下...
  • 1、首先创建存储过程 delimiter $$ DROP procedure IF EXISTS getDataByDbName $$ CREATE procedure getDataByDbName(in dbName VARCHAR(20)) BEGIN SET @STMT =CONCAT("SELECT * from ",dbName,";"); PREPARE ...
  • 1、mysql存储过程变量引用 代码示例: delimiter// create procedure test_10() BEGIN declare i int default 1; while (i) DO insert into test001 (product_name) value (CONCAT('测试_',i)); set i = i+1; ...
  • 一.首先变量的声明有3中方式 ...注:存储过程中声明变量必须在begin之前 并且声明字符串时必须指定大小,不然会报错 2.使用%TYPE声明 ①格式:变量名 表名.字段名%TYPE ②含义:该变量的数据类型与指定...
  • 使用SELECT …INTO语句为变量赋值在MySQL存储过程中,可以使用SELECT …INTO语句对变量进行赋值,该语句在数据库中进行查询,并将得到的结果赋值给变量。SELECT …INTO语句的语法格式如下:SELECTcol_name[,...]...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,052,437
精华内容 420,974
关键字:

存储过程表变量使用