只能应用在存储过程
create procedure p12(out para1 char(20))
begin
select s1 into para1 from tb1;
end//
select 返回结果:表、列、行、值
游标:指针
1、select…..into
注意:into 关键字后的变量要求先声明;
只能出现在存储过程和触发器,不能单独使用;
字段(数量、类型)要和变量一致;
只能针对一行;
练习:针对db1中的db1;
把一个字段的内容保存到变量,显示该变量
create procedure p12(out para1 int)
begin
select s1 into para1 from tb1 where s1=5;
end//
call p12(@x)//
select @x;
作业:130p-142p练习
游标?
步骤:
创建游标:declare
打开游标;open
获取记录;fetch
关闭游标;close
语法:
declare 游标名称 cursor for
select……from….. where ……;-----à不能有into关键字
注意:声明完成后并不执行
open 游标名称
fetch 游标名称 into 变量
close 游标名称;
练习2:针对练习1
流程控制语句 while
create procedure p12(out para1 int)
begin
declare v int default 0;
declare c cursor for
select s1 from tb1;
open c;
while v<2 do
fetch c into para1;
set v=v+1;
end while;
close c;
end//
循环次数无法确定,异常提示
语法:
异常代码:
SQLSTATE代码
Error 1022 XXXXXXXXXX
参见手册(异常对应描述)
内置异常描述
declare exit handler for SQLSTATE 信息 执行的动作
declare continue handler for SQLSTATE 信息 执行的动作
create procedure p16(out para1 int)
begin
declare a boolean default true;
declare c cursor for
select s1 from tb1;
declare exit handler for not found
set a=false;
open c;
while a do
fetch c into para1;
end while;
close c;
end//
注意:
1、 执行顺序(声明位置无要求,建议在开头,当错误出现的时候被执行,如果是
exit类型的在终止整个存储过程的执行;如果是continue类型的出现错误的位置继续执行);
2、构成条件;