
正文
mysql存储过程变量定义,mysql存储过程语句
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
浅谈MySQL存储过程中declare和set定义变量的区别
主要用在存储过程中,或者是给存储传参数中。两者的区别是:在调用存储过程时,以DECLARE声明的变量都会被初始化为 NULL。而会话变量(即@开头的变量)则不会被再初始化,在一个会话内,只须初始化一次,之后在会话内都是对上一次计算的结果,就相当于在是这个会话内的全局变量。
定义变量不同。用户变量使用set语句,局部变量使用declare语句定义 作用范围。局部变量只在begin-end语句块之间有效。在begin-end语句块运行完之后,局部变量就消失了。所以,最后它们之间的层次关系是:变量包括局部变量和用户变量。用户变量包括会话变量和全局变量。
例如,Set@num=1;表示声明了一个名字叫“@num”的会话变量,其初始值为1。(2)存储过程变量存储过程变量以DECLARE为关键字声明的变量,只能在存储过程中使用,其命名不需要以@开头。以DECLARE声明的变量都会被初始化为NULL,存储过程变量存在于数据库服务器上。
在mysql存储过程出现之前declare是一块鸡肋,大家常用declare来定义局部变量,我习惯性的还是使用set来定义变量(虽然是全局的,但是来的方便)。存储过程出现后declare的标准处理定义就变成了非常强大的工具,可以用来为存储过程添加一些非常强大的错误处理机制。
相关问答
Q1: 存储过程的变量指什么?
1、存储过程是面向对象的数据库编程语言,与其他面向对象编程语言类似,可声明变量,用变量来存取某一类值,变量在存储过程中占有非常重要的位置。变量声明在MySQL语言的存储过程中,变量有会话变量、存储过程变量两种。两种变量的声明方式不同,作用场景也不尽相同,在实际使用中要根据需要加以选择。
2、可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量。以 DECLARE 关键字声明的变量,只能在存储过程中使用,称为存储过程变量,例如:DECLARE var1 INT DEFAULT 0;主要用在存储过程中,或者是给存储传参数中。两者的区别是:在调用存储过程时,以DECLARE声明的变量都会被初始化为 NULL。
3、以 DECLARE 关键字声明的变量,只能在存储过程中使用,称为存储过程变量,例如:DECLARE var1 INT DEFAULT 0;主要用在存储过程中,或者是给存储传参数中。
4、DATE。存储过程引导数据时,通常使用时间字段(时间戳)来确定是否需要更新,存储过程中的变量定义为DATE,则Oracle会根据变量DATE自动将数据表中的时间字段转换为日期类型,并截取时间信息,但是,要导入的数据一天要更新多次,并且实时性要求较高,因此必须精确到秒。
5、在存储过程中常看到declare定义的变量和@set定义的变量。简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量。declare定义的变量类似java类中的局部变量,仅在类中生效。即只在存储过程中的begin和end之间生效。
6、好像没什么区别把,无非就是调用的时候是用参数来带替传入的变量咯。
Q2: 存储过程中如何定义一个变量?
1、例如,Set@num=1;表示声明了一个名字叫“@num”的会话变量,其初始值为1。(2)存储过程变量存储过程变量以DECLARE为关键字声明的变量,只能在存储过程中使用,其命名不需要以@开头。以DECLARE声明的变量都会被初始化为NULL,存储过程变量存在于数据库服务器上。
2、MySQL存储过程中,定义变量有两种方式:使用set或select直接赋值,变量名以 @ 开头.例如:set @var=1;可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量。
3、以 DECLARE 关键字声明的变量,只能在存储过程中使用,称为存储过程变量,例如:DECLARE var1 INT DEFAULT 0;主要用在存储过程中,或者是给存储传参数中。
4、定义一个 名称为 v_index 的变量, 类型为 INT MYSQL 变量定义应该只能在 存储过程, 函数里面定义.不像 Oracle / SQL Server , 一个 BEGIN / END 里面就可以定义/执行了。
Q3: MySQL存储过程里怎么定义一个参数类型和表的变量类型一样?
1、(2)存储过程变量存储过程变量以DECLARE为关键字声明的变量,只能在存储过程中使用,其命名不需要以@开头。以DECLARE声明的变量都会被初始化为NULL,存储过程变量存在于数据库服务器上。
2、MySQL 存储过程支持三种类型的参数,即输入参数、输出参数和输入/输出参数,分别用 IN、OUT 和 INOUT 三个关键字标识。其中,输入参数可以传递给一个存储过程,输出参数用于存储过程需要返回一个操作结果的情形,而输入/输出参数既可以充当输入参数也可以充当输出参数。
3、定义一个 名称为 v_index 的变量, 类型为 INT MYSQL 变量定义应该只能在 存储过程, 函数里面定义.不像 Oracle / SQL Server , 一个 BEGIN / END 里面就可以定义/执行了。
4、存储过程共有IN、OUT、INOUT三种参数类型,格式如下:CREATEPROCEDURE(IN|OUT|INOUT参数名数据类型...)存储过程可以没有参数,但如果在使用过程需要用到参数,需按上面的格式进行定义。
5、在PHP、C++等语言里面可以使用变量,在存储过程里面可以使用变量,SQL语句里面不能使用变量的。
6、分别是该存储过程的两个参数,注意,在SQL SERVER中,所有用户定义的变量都以“@”开头,OUTPUT关键字表示这个参数是用来输出的,AS之后就是存储过程内容了。只要将以上代码在“查询分析器”里执行一次,SQL SERVER就会在当前数据库中创建一个名为“upGetUserName”的存储过程。
mysql存储过程变量定义的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mysql存储过程语句、mysql存储过程变量定义的信息别忘了在本站进行查找喔。






