博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
存储过程2
阅读量:5243 次
发布时间:2019-06-14

本文共 1806 字,大约阅读时间需要 6 分钟。

MYSQL存储过程中的参数主要有局部参数和会话参数两种,又称局部变量和会话变量。

局部标量只在定义该局部变量的begin...end范围内有效,会话变量在整个存储过程范围内均有效。

1.局部变量

局部变量以关键字declare声明,后跟变量名和变量类型,例:

declare a int

在声明局部变量时,也可用关键字default 为变量指定默认值,未设置时默认值为NULL。例:

declare a int default 10

 

例局部变量与存储过程:

delimiter//

create procedure pl()

begin

declare x char(10) default 'outer';

begin

declare x char(10) default 'inner';

seclect x;

end;

select x;

end

//

调用存储过程call pl()//

第一次x值为inner,第二次x值为outer。

 

2.全局变量

MYsql中会话变量不必声明即可使用,并在整个存储过程中都有效,会话变量名以字符‘@’作为

起始字符。例:

delimiter//

create procedure p2()

begin

set @t=1;

begin

set @t=2;

select @t;

end;

select @t;

end 

//

调用该存储过程call p2()//

两次@t的值均为2.

 

MYSQL中使用set关键字为变量赋值:

set var_name=expr[,var_name=expr]...

另一种赋值语句为:

select col_name[,...] into var_name[,...] from table_name where condition

表示将查询结果赋值给变量var_name.

 

光标的运用

通过MYSQL查询数据库,其结果可能为多条记录。在存储过程和函数中使用光标可以实现逐条读取

结果集中的记录。光标使用包括声明光标(declare cursor)、打开光标(open cursor)、使用

光标(fetch cursor)和关闭光标(close cursor)。光标声明必须在处理程序之前,且声明在变量和

条件之后。

 

1.声明光标

declare cursor_name cursor for select_statement

其中 cursor_name是光标的名称。select_statement是一个select语句,返回一行或多行数据。

其中这个语句也可以在存储过程中定义多个光标,但是必须保证每个光标名称的唯一性。例:

declare info_of_student cursor for select 

sid,name,age,sex,age from studentinfo

where sid= 1;

这里的select 子句不能包含into子句,并且光标只能在存储过程或存储函数中使用,上述代码

不能单独执行。

打开光标open cursor_name ,

在一个程序中,一个光标可以被打开多次。由于可能在用户打

开光标后,其他用户或程序正在更新数据表,可能导致用户在每次打开光标后,显示的结果都

不同。

 

使用光标

光标在打开后可使用:fetch cursor_name into var_name[,var_name]...

其中cursor_name 代表已经打开的光标的名称;var_name参数表示将光标中的select语句

查询出来的信息存入该参数中。var_name 是存放数据的变量名,必须在声明光标前定义好。

fetch...into 语句与select...into语句具有相同的意义。

将已打开的光标info_of_student中select 语句查询出来的信息存入tmp_name和tmp_tel中。

其中tmp_name和tmp_tel必须在使用前定义。其代码如下:

fetch info_of_student into tmp_name,tmp_tel;

 

关闭光标

光标使用完毕后要及时关闭。对于已关闭的光标,不能再使用fetch来使用。

close cursor_name

转载于:https://www.cnblogs.com/Ting-light/p/9548510.html

你可能感兴趣的文章
解决php -v查看到版本与phpinfo()版本不一致问题
查看>>
iOS-解决iOS8及以上设置applicationIconBadgeNumber报错的问题
查看>>
亡灵序曲-The Dawn
查看>>
Redmine
查看>>
帧的最小长度 CSMA/CD
查看>>
xib文件加载后设置frame无效问题
查看>>
编程算法 - 左旋转字符串 代码(C)
查看>>
IOS解析XML
查看>>
Python3多线程爬取meizitu的图片
查看>>
树状数组及其他特别简单的扩展
查看>>
zookeeper适用场景:分布式锁实现
查看>>
110104_LC-Display(液晶显示屏)
查看>>
httpd_Vhosts文件的配置
查看>>
php学习笔记
查看>>
普通求素数和线性筛素数
查看>>
React Router 4.0 基本使用
查看>>
PHP截取中英文混合字符
查看>>
【洛谷P1816 忠诚】线段树
查看>>
电子眼抓拍大解密
查看>>
poj 1331 Multiply
查看>>