- 论坛徽章:
- 0
|
搞个output不就得了
举例说明
/* 交易金额统计 */
create procedure ProcGenStat_jyjetj
(
@jyrq char( , /* 交易日期 */
@retcode char( 5) output, /* 返回码 */
@retmsg char( 50) output /* 返回信息 */
)
AS
BEGIN
DECLARE @lstjjgh char( 
DECLARE @tjjgh char( 
DECLARE @lstrcode char( 4)
DECLARE @trcode char( 4)
DECLARE @lscy char( 2)
DECLARE @cy char( 2)
DECLARE @flag int
DECLARE @cnt1 int
DECLARE @cnt2 int
DECLARE @cnt3 int
DECLARE @cnt4 int
DECLARE @cnt5 int
DECLARE @amt1 money
DECLARE @amt2 money
DECLARE @amt3 money
DECLARE @amt4 money
DECLARE @amt5 money
DECLARE @tmpje money
/* 查找是否已经存在表记录 */
if( EXISTS( select 1 from jyjetjb WHERE trdate = @jyrq))
BEGIN
SELECT @retcode = '99998', @retmsg = '已经存在记录!!'
return 1003
END
/* 定义取记录游标 */
DECLARE jyjetj_cur CURSOR FOR
SELECT b.tjjgh, a.trcode, a.cy, a.amount
FROM zjywdbs..abisrec a, zjywdbs..tjjgdzb b
WHERE a.trdate = @jyrq
AND a.brchno = b.brchno
AND a.trcode not in ( '3985', '3986')
AND a.tlid not like '6_[a-z][a-z]'
ORDER BY a.trdate, b.tjjgh, a.cy
/* 打开游标 */
OPEN jyjetj_cur
if( @@error <> 0)
BEGIN
SELECT @retcode = '99999', @retmsg = '系统操作错误!!'
return 1001
END
/* 预赋值历史信息 */
SELECT @lstjjgh = '', @lstrcode='', @lscy = '', @flag = 0
/* 取首记录 */
FETCH jyjetj_cur INTO @tjjgh, @trcode, @cy, @tmpje
/* 循环取记录 */
WHILE( @@sqlstatus != 2)
BEGIN
/* 判断错误信息 */
if( @@sqlstatus = 1)
BEGIN
SELECT @retcode = '99998', @retmsg = '没有该记录!!'
CLOSE jyjetj_cur
return 1002
END
/* 赋值历史记录 */
if( @lstjjgh <> @tjjgh OR @lstrcode <> @trcode OR @lscy <> @cy)
BEGIN
if( @flag = 1 AND @cnt1 + @cnt2 + @cnt3 + @cnt4 + @cnt5 > 0
AND @amt1 + @amt2 + @amt3 + @amt4 + @amt5 > 0)
BEGIN
INSERT INTO jyjetjb
VALUES( @jyrq, @lstjjgh, @lstrcode, @lscy,
@cnt1, @amt1, @cnt2, @amt2, @cnt3, @amt3,
@cnt4, @amt4, @cnt5, @amt5)
END
SELECT @lstjjgh = @tjjgh, @lstrcode = @trcode, @lscy = @cy
SELECT @cnt1 = 0, @cnt2 = 0, @amt1 = 0, @amt2 = 0
SELECT @cnt3 = 0, @cnt4 = 0, @amt3 = 0, @amt4 = 0
SELECT @cnt5 = 0, @amt5 = 0
SELECT @flag = 1
END
/* 计算金额 */
select @tmpje = ( -1) * @tmpje
/* 统计记录 */
if( @tmpje > 0 AND @tmpje <= 300.00)
BEGIN
SELECT @cnt1 = @cnt1 + 1, @amt1 = @amt1 + @tmpje /* 借方 */
END
else if( @tmpje > 300.00 AND @tmpje <= 500.00)
BEGIN
SELECT @cnt2 = @cnt2 + 1, @amt2 = @amt2 + @tmpje /* 借方 */
END
else if( @tmpje > 500.00 AND @tmpje <= 1000.00)
BEGIN
SELECT @cnt3 = @cnt3 + 1, @amt3 = @amt3 + @tmpje /* 借方 */
END
else if( @tmpje > 1000.00 AND @tmpje <= 5000.00)
BEGIN
SELECT @cnt4 = @cnt4 + 1, @amt4 = @amt4 + @tmpje /* 借方 */
END
else if( @tmpje > 5000.00)
BEGIN
SELECT @cnt5 = @cnt5 + 1, @amt5 = @amt5 + @tmpje /* 借方 */
END
/* 取首记录 */
FETCH jyjetj_cur INTO @tjjgh, @trcode, @cy, @tmpje
END
CLOSE jyjetj_cur
SELECT @retcode = '00000', @retmsg = '操作成功!'
return 0
END |
|