sql中declare是什么意思
发布时间:2025-05-15 03:07:44 发布人:远客网络
一、sql中declare是什么意思
sql中declare是声明的意思,就是声明变量的,这个一般是用在函数和存储过程中的。比如说,这个存储过程是,只要你把学号输入进来,就能查询这个学生的班级。那么在这个存储过程里面,学号就是参数。你给什么学号,它就返回给你相应的班级。又或者你也可以做成,只要你输入学号,这个存储过程就会将这个学生删除。
mysql存储过程中,定义变量有两种方式:
1.使用set或select直接赋值,变量名以@开头.
可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量。
2.以 DECLARE关键字声明的变量,只能在存储过程中使用,称为存储过程变量,例如:
主要用在存储过程中,或者是给存储传参数中。
在调用存储过程时,以DECLARE声明的变量都会被初始化为 NULL。而会话变量(即@开头的变量)则不会被再初始化,在一个会话内,只须初始化一次,之后在会话内都是对上一次计算的结果,就相当于在是这个会话内的全局变量。
在存储过程中,使用动态语句,预处理时,动态内容必须赋给一个会话变量。
有的时候在查询更新数据库的时候,需要多条语句的查询,因此需要多次修改
declare可以满足多次执行,但数据只修改一次。
declare@local_variable data_type
DECLARE:定义变量,变量第一个字母是“@”
可以使用set和select对变量进行赋值,
在sql语句中就可以使用@local_variable来调用变量
声明中可以提供值,否则声明之后所有变量将初始化为NULL。
二、浅谈MySQL存储过程中declare和set定义变量的区别
在存储过程中常看到declare定义的变量和@set定义的变量。简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量。
1、declare定义的变量类似java类中的局部变量,仅在类中生效。即只在存储过程中的begin和end之间生效。
2、@set定义的变量,叫做会话变量,也叫用户定义变量,在整个会话中都起作用(比如某个应用的一个连接过程中),即这个变量可以在被调用的存储过程或者代码之间共享数据。如何理解呢?可以看下面这个简单例子,很好理解。
(1)先执行下面脚本,创建一个存储过程,分别有declare形式的变量和@set形式的变量
DROP PROCEDURE IF EXISTS temp;
(3)然后重复调用这个存储过程。
(4)会发现a的值不改变,而b的值会一直增加。
所以,总结起来就是开头那句话,declare定义的类似是局部变量,@set定义的类似全局变量。
三、mysql存储过程中 declare 和 set 定义变量的区别
MySQL存储过程中,定义变量有两种方式:
1.使用set或select直接赋值,变量名以@开头.
可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量。
2.以 DECLARE关键字声明的变量,只能在存储过程中使用,称为存储过程变量,例如:
主要用在存储过程中,或者是给存储传参数中。
在调用存储过程时,以DECLARE声明的变量都会被初始化为 NULL。而会话变量(即@开头的变量)则不会被再初始化,在一个会话内,只须初始化一次,之后在会话内都是对上一次计算的结果,就相当于在是这个会话内的全局变量。
在存储过程中,使用动态语句,预处理时,动态内容必须赋给一个会话变量。