通过普通的sql

时间:2015-07-03 10:13:15

标签: sql oracle oracle11g

有没有办法在同一个事务中获取插入的行数? 我看到了PL / SQL命令:

SQL%ROWCOUNT

完成这项工作,但我不想为此创建一个程序! 我试着简单地打电话给

insert into T ...
select SQL%ROWCOUNT;

但它给了我"无效的字符"。 如果我记得很好mysql实际上有办法获取这些信息,oracle真的没有提供任何手段吗?

2 个答案:

答案 0 :(得分:1)

  

我不想为此创建一个程序

无需创建任何过程,您只需使用匿名PL / SQL块

例如,

int num = 9;
Console.WriteLine(num.ToString("X"));

更新如果您无法使用 PL / SQL ,只使用纯 SQL ,则无法使用SQL> SET serveroutput ON SQL> DECLARE 2 var_cnt NUMBER; 3 BEGIN 4 var_cnt :=0; 5 FOR i IN(SELECT empno FROM emp) 6 LOOP 7 INSERT INTO emp(empno) VALUES(i.empno); 8 var_cnt := var_cnt + SQL%ROWCOUNT; 9 END loop; 10 DBMS_OUTPUT.PUT_LINE(TO_CHAR(var_cnt)||' rows inserted'); 11 END; 12 / 14 rows inserted PL/SQL procedure successfully completed. SQL>

我想到的唯一选择是在表格中添加时间戳列,并根据时间戳查询计数,以了解插入的行数

答案 1 :(得分:0)

尝试以下,

DBMS_OUTPUT.put_line(TO_CHAR(SQL%ROWCOUNT)||' rows inserted');