informix 存储过程学习

一、存储过程概述
存储过程是一个用户定义的函数,由存储过程语句(SPL) 和一组SQL语句组成,以可以执行代码形式存储在数据库中,和表、视图、索引等一样,是数据库的一种对象。存储过程语言SPL(Stored Procedure Language),只能用在存储过程中,可以分成下面几类:

变量定义和赋值:define,let
流程控制:
分支控制:
if then
elif
else
end if;循环控制:
FOR,FOREACH,WHILE,EXIT, CONTINUE
函数调用与返回
CALL, SYSTEM ,RETURN
错误处理和调试
TRACE, ON EXCEPTION, RAISE EXCEPTION
二、存储过程建立 (一定要在dbaccess环境下)

create procedure cj()

update table1 set name = 'cc' where id=1;

end procedure;


三、存储过程的执行(在dbvis工具和dbaccess环境下均可以操作)

execute procedure cj()

四、循环语句foreach

用 FOREACH 语句可以查询或操作一组记录
FOREACH 隐式定义并打开一个游标
三种格式
FOREACH [WITH HOLD] SELECT ... INTO 语句
语句块
END FOREACH;
-FOREACH 游标名[WITH HOLD] FOR SELECT ... INTO 语句
语句块
END FOREACH;
FOREACH EXECUTE PROCEDURE 存储过程名(参数...参数)
INTO 变量[, 变量[, ...]] 语句块
END FOREACH;
FOREACH 定义的游标在以下情况下关闭:无行返回
事务提交或回滚导致非保护游标关闭
循环非正常退出(使用EXIT 或 ON EXCEPTION)

四、批处理执行

create procedure pro_foreach2()
define sid integer;

foreach select id into sid from table1 where id=1

update table1 set name = 'dsfass' where id = sid;(注意这里的分号一定要打)

end foreach;

end procedure;

4、存储过程和游标结合


create procedure pHasCursor()
define v_f1 integer;
begin
on exception
rollback work;
return;
end exception
begin work;
foreach curt1 with hold for
select id into v_f1 from table1
if (v_f1= 1) then

update table1 set name = 'one' where current of curt1;
elif (v_f1 = 2) then
update table1 set name = 'two' where current of curt1;
end if;
end foreach;
commit work;
end;
end procedure;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值