产品支持(实施)工程师面经分享:MySQL中变量的定义和变量的赋值使用(转)

分享下今天的面经,面试公司是北京的一家高新产业技术公司(公司规模很大,海外有分部),一面(电话面试)是一个HR小姐姐问的个人基本素质和个人情况,二面(技术官面试),其中被问到的一个数据库的存储过程中的变量赋值的知识点,明明了解,结果可能初次被这种大厂翻牌,直接脑子糊了,说没弄过存储过程,答的时候就没打到点子上,甚至不全面,可以用四个字形容,真的是有点语无伦次!唉,香菇!

好了,废话不说了,上重点!这是转的别人写的一个存储过程详解,拿过来给大家避避坑,
MySQL存储过程中,定义变量有两种方式:

1、使用set或select直接赋值,变量名以@开头

例如:

set @var=1; 

可以在一个会话的任何地方声明,作用域是整个会话,称为用户变量。

2、以declare关键字声明的变量,只能在存储过程中使用,称为存储过程变量,例如:

declare var1 int default 0; 

主要用在存储过程中,或者是给存储传参数中。

两者的区别是:

在调用存储过程时,以declare声明的变量都会被初始化为null。而会话变量(即@开头的变量)则不会被再初始化,在一个会话内,只须初始化一次,之后在会话内都是对上一次计算的结果,就相当于在是这个会话内的全局变量。

主体内容

局部变量
用户变量
会话变量
全局变量
会话变量和全局变量叫系统变量。

一、局部变量,只在当前begin/end代码块中有效

局部变量一般用在sql语句块中,比如存储过程的begin/end。其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。declare语句专门用于定义局部变量,可以使用default来说明默认值。set语句是设置不同类型的变量,包括会话变量和全局变量。
局部变量定义语法形式

declare var_name [, var_name]… data_type [ DEFAULT value ];
例如在begin/end语句块中添加如下一段语句,接受函数传进来的a/b变量然后相加,通过set语句赋值给c变量。

set语句语法形式set var_name=expr [, var_name=expr]…; set语句既可以用于局部变量的赋值,也可以用于用户变量的申明并赋值。


declare c int default 0;
set c=a+b;
select c as C;
或者用select …. into…形式赋值
select into 语句句式:select col_name[,...] into var_name[,...] table_expr [where...]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值