oracle存储过程rowcount用法,Oracle带输入、输出参数的存储过程回来受影响的行数SQL%ROWCOUNT...

当前位置:我的异常网» SQL » Oracle带输入、输出参数的存储过程回来受影响的行数

Oracle带输入、输出参数的存储过程回来受影响的行数SQL%ROWCOUNT

www.myexceptions.net  网友分享于:2014-05-15  浏览:4次

Oracle带输入、输出参数的存储过程返回受影响的行数SQL%ROWCOUNT

Oracle带输入、输出参数的存储过程返回受影响的行数SQL%ROWCOUNT

[sql]

CREATE OR REPLACE PROCEDURE PROC_UPDATE_TEMP(P_DAYS       IN NUMBER, --执行天数

P_ROWS       OUT VARCHAR2, --返回受影响的行数

P_IS_SUCCESS OUT BOOLEAN) --返回成功与否

AS

V_NOW        DATE := TRUNC(SYSDATE);

V_BEGIN_DATE DATE;

V_SECOND     NUMBER;

I            INT := 0;

BEGIN

/*  WHILE I < P_DAYS LOOP

UPDATE T_TEMP

SET TEMP_STATUS = '01', TEMP_FLAG = '0'

WHERE CREATE_TIME >= V_NOW - I

AND CREATE_TIME < V_NOW + 1 - I;

COMMIT;

I = I + 1;

END LOOP;*/

FOR I IN 0 .. P_DAYS LOOP

BEGIN

V_BEGIN_DATE := SYSDATE;

UPDATE T_TEMP

SET TEMP_STATUS = '01', TEMP_FLAG = '0'

WHERE CREATE_TIME >= V_NOW - I

AND CREATE_TIME < V_NOW + 1 - I;

P_IS_SUCCESS := TRUE;

V_SECOND     := (SYSDATE - V_BEGIN_DATE) * 24 * 60 * 60;

--返回受影响的行数:SQL%ROWCOUNT

P_ROWS := SQL%ROWCOUNT || '行被更新,耗时:' || TRUNC(V_SECOND, 2) || '秒';

DBMS_OUTPUT.PUT_LINE(P_ROWS);

COMMIT;

EXCEPTION

WHEN NO_DATA_FOUND THEN

NULL;

P_IS_SUCCESS := FALSE;

END;

END LOOP;

END PROC_UPDATE_TEMP;

[sql]

--调用存储过程

DECLARE

-- Boolean parameters are translated from/to integers:

-- 0/1/null false/true/null

P_IS_SUCCESS BOOLEAN;

P_ROWS       VARCHAR2(200);

BEGIN

-- Call the procedure

PKG_STL_UPDATE_BILL_DATA.PROC_STL_UPDATE_TRUNC(P_DAYS       => 0,

P_ROWS       => P_ROWS,

P_IS_SUCCESS => P_IS_SUCCESS);

-- Convert false/true/null to 0/1/null

--:P_IS_SUCCESS := SYS.DIUTIL.BOOL_TO_INT(P_IS_SUCCESS);

dbms_output.put_line(P_ROWS);

dbms_output.put_line(SYS.DIUTIL.BOOL_TO_INT(P_IS_SUCCESS));

END;

[sql]

--SQL%ROWCOUNT用法

BEGIN

UPDATE T_JOB T SET T.JOB_ID = NULL WHERE T.ID = '2013';

IF (SQL%ROWCOUNT != 1) THEN

RAISE_APPLICATION_ERROR(-20001, '没有成功修改到记录');

END IF;

END;

文章评论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值