DB2存储过程

存储过程可以提高程序性能,存储过程创建及运行在数据库服务器上,可以减少数据库存取流量。并且可以帮助集中处理业务逻辑,如果对存储过程进行更改,则使用该存储过程的所有客户机应用都立即可以应用这些更改。
存储过程分为外部存储过程和SQL存储过程,SQL存储过程由SQL语句和控制SQL语句组成。SQL存储过程必须用CREATE PROCEDURE语句进行注册。一旦存储过程注册后,在系统索引表中的信息就会独立于程序而存在
存储过程的创建语法:
create procedure procedure_name
({[in|out]parameter_name datatype}[...n])
[specific specific_name]
[dynamic result sets [0|integer]]
SQL_procedure_body

procedure_name:存储过程名称,不能存在存储过程名字和参数数目都相同的存储过程,即使参数的类型不同也不可以。
specific_name:存储过程别名,别名可以用于drop存储过程或者给存储过程添加注释,但是不能调用。在同名存储过程时最好起上别名,若没有指定,则会自动分配类似与"SQL180512150922456",既SQL+时间戳"yymmddhhmmsshhn"
dynamic result sets:指定存储过程返回结果集的最大数量,存储过程虽然没有return语句,但是可以返回结果集。
SQL_procedure_body:存储过程的主体,其核心是一组复合语句,以关键字 beginend定界,这些语句可以是atomic或者not atomic的,默认是not  atomic
存储过程的调用:
CALL procedure_name (入参,?)
规则:
变量和参数必须严格匹配
所有参数都必须有值(out参数需要占位符?)
重载存储过程的区分和参数的匹配取决于参数的目录.
1:创建无参存储过程
DB2语法:
--/
CREATE  PROCEDURE pro2()
	BEGIN
		UPDATE t_cps_cupsicacinfo SET CHKDATE='20180511';
	END;
/
调用:db2 "call pro2()"

附Mysql创建方式:
mysql语法:
DELIMITER //
CREATE  PROCEDURE pro2()
	BEGIN
		UPDATE t_cps_cupsicacinfo SET CHKDATE='20180511';
	END;//
DELIMITER ;
调用:call pro2();

2:创建出参存储过程
DB2语法:
--/
CREATE  PROCEDURE pro1(out v_result VARCHAR(10))
 BEGIN
     if ((select count(THIRDSYSTIME) from T_CPS_CUPSICACINFO where THIRDSYSTIME='20180511')<=5)
     then set v_result='昨天交易笔数小于5';
     else set v_result='昨天交易笔数大于5';
     end if;
END;
/
调用:db2 "call pro1(?)"

附Mysql创建方式:
mysql语法:
DELIMITER //
CREATE  PROCEDURE pro1(out v_result VARCHAR(10))
 BEGIN
     if ((select count(THIRDSYSTIME) from T_CPS_CUPSICACINFO where THIRDSYSTIME='20180511')<=5)
     then set v_result='昨天交易笔数小于5';
     else set v_result='昨天交易笔数大于5';
     end if;
END;//
DELIMITER ;
调用:call pro1(@a);
select @a;

Mysql带返回参数的存储过程调用是@+占位参数,并且需要在Call之后进行Select才可以看见返回结果
3:创建入参存储过程

CREATE  PROCEDURE pro3(IN CHKDATE VARCHAR(10))  
    BEGIN  
        UPDATE t_cps_cupsicacinfo SET CHKDATE=CHKDATE;  
    END;//  



  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值