过程化SQL和存储过程

目录

1、存储过程介绍

2、一个demo


基本的SQL是高度非过程化的语言。过程化SQL是对SQL的扩展,使其增加了过程化功能。

1、存储过程介绍

2、一个demo

文件名:proc_test.sql

drop procedure proc_test;
create procedure proc_test(lv_statdate date,lv_xm char(2)) 
--定义返回值的字段类型
returning char(8),char(30),
decimal(16,2)
integer;
--定义返回值
  Define lv_r char(8);
  Define lv_name char(30);
  Define lv_qb decimal(16,2);
  Define lv_hb integer;
--当参数lv_xm='01'时执行下面这段代码
if lv_xm='01' then

select a.*
from t0 a
into temp t_result;

--插入并返回
foreach select * into lv_r,lv_name,lv_qb,lv_hb
from t_result order by zzl desc
 return lv_r,lv_name,lv_qb,
lv_hb with resume;
end foreach

drop table t0;
drop table t_bz;
drop table t_sz;
drop table t_sz1;
drop table t_sz_sn;
drop table t_bz_sn;
drop table t_bz1;
drop table t_result;
end if;

--当参数lv_xm='02'时执行下面这段代码
if lv_xm='02' then
。。。。。//和上面一样
end if;

end procedure;

写完之后需要先执行一遍这个文件,存储过程就被存到数据库中了,在java代码中就直接用存储过程名就能找到这个存储过程了。

一般的sh脚本需要定时,存储过程不需要做定时。

java代码中的调用过程:


try {
			//连接池获取连接和语句
       Class.forName("**.jdbc***");
      
	   connWeb=DriverManager.getConnection("jdbc:****);
	   stmt=connWeb.createStatement(); 

  
       query = "execute procedure proc_test('"+mstatdate1+"'"+",'"+mxm1+"'"+");" ;

       //out.println(query);
			
		//查询报表
		ResultSet rs = stmt.executeQuery(query);
		i = 0;
		//计算机构个数
		while (rs.next()) {
			i++;
		}

 


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值