linux复制sql语句自带行数,在动态SQL语句中获得被处理的记录行数

在动态SQL语句中获得被处理的记录行数,可以简单的通过 SQL%ROWCOUNT 系统变量来实现。请参考下面的例子:

create table test (id number,name varchar2(10));

set serveroutput on;

DECLARE

V_ROWCOUNT NUMBER;

V_SQL      VARCHAR2(100);

V_ID       test.ID%TYPE;

V_NAME     test.NAME%TYPE;

BEGIN

-- INSERT A ROW

V_SQL := 'INSERT INTO TEST VALUES (:a1,:b1)';

V_ID := 1;

V_NAME := 'NAME1';

EXECUTE IMMEDIATE V_SQL USING V_ID,V_NAME;

V_ROWCOUNT := sql%rowcount;

DBMS_OUTPUT.PUT_LINE(V_ROWCOUNT || 'row Inserted!' );

V_ID := 2;

V_NAME := 'NAME2';

EXECUTE IMMEDIATE V_SQL USING V_ID,V_NAME;

V_ROWCOUNT := sql%rowcount;

DBMS_OUTPUT.PUT_LINE(V_ROWCOUNT || 'row Inserted!' );

COMMIT;

-- INSERT MANY ROWS

V_SQL := 'INSERT INTO TEST SELECT * FROM test';

EXECUTE IMMEDIATE V_SQL ;

V_ROWCOUNT := sql%rowcount;

DBMS_OUTPUT.PUT_LINE(V_ROWCOUNT || 'rows Inserted!' );

COMMIT;

--UPDATE

V_NAME := 'ALLNAME';

V_SQL := 'UPDATE  test  SET  name = :a1';

EXECUTE IMMEDIATE V_SQL USING V_NAME;

V_ROWCOUNT := sql%rowcount;

DBMS_OUTPUT.PUT_LINE(V_ROWCOUNT || 'rows Updated!' );

COMMIT;

--DELETE

V_ID := 1;

V_SQL := 'DELETE FROM  TEST  WHERE  ID = :a1';

EXECUTE IMMEDIATE V_SQL USING V_ID;

V_ROWCOUNT := sql%rowcount;

DBMS_OUTPUT.PUT_LINE(V_ROWCOUNT || 'rows Deleted!' );

COMMIT;

END;

--执行结果:

1row Inserted!

1row Inserted!

2rows Inserted!

4rows Updated!

2rows Deleted!

PL/SQL procedure successfully completed

Executed in 0.03 seconds

SQL> SELECT * FROM test;

ID NAME

---------- ----------

2 ALLNAME

2 ALLNAME

Executed in 0.02 seconds

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值