当前位置: 代码迷 >> Oracle管理 >> 请问一个关于UPDATE执行结果的有关问题
  详细解决方案

请问一个关于UPDATE执行结果的有关问题

热度:61   发布时间:2016-04-24 05:33:06.0
请教一个关于UPDATE执行结果的问题
请问有没有办法可以取得UPDATE语句的执行时间和执行行数?

就是在PL/SQL里的SQLWINDOW里执行完UPDATE语句后显示的执行时间和执行行数,我想捕获这两个值传入变量。



------解决方案--------------------
探讨
请问有没有办法可以取得UPDATE语句的执行时间和执行行数?

------解决方案--------------------
1 你可以用sqlplus 命令 set timing on 。不过这个只能给人看看,我不知道能不能获取到。
但 按照兰兰姐那中思路,lz你写两个触发器(before,after)是一定可以获取的;
2 通过隐式游标的属性获得

相关的测试如下:
SQL code
SQL> ed已写入 file afiedt.buf  1  CREATE TABLE test AS  2* SELECT * FROM empSQL> /表已创建。SQL> select * from test;     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM    DEPTNO---------- ---------- --------- ---------- -------------- ---------- --------------------      7369 SMITH      CLERK           7902 17-12月-80            800        20      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300        30      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500        30      7566 JONES      MANAGER         7839 02-4月 -81           2975        20      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400        30      7698 BLAKE      MANAGER         7839 01-5月 -81           2850        30      7782 CLARK      MANAGER         7839 09-6月 -81           2450        10      7839 KING       PRESIDENT            17-11月-81           5000        10      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0        30      7900 JAMES      CLERK           7698 03-12月-81            950        30      7902 FORD       ANALYST         7566 03-12月-81           3000        20      7934 MILLER     CLERK           7782 23-1月 -82           1300        10已选择12行。SQL> set timing onSQL> select * from emp;     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM    DEPTNO---------- ---------- --------- ---------- -------------- ---------- --------------------      7369 SMITH      CLERK           7902 17-12月-80            800        20      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300        30      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500        30      7566 JONES      MANAGER         7839 02-4月 -81           2975        20      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400        30      7698 BLAKE      MANAGER         7839 01-5月 -81           2850        30      7782 CLARK      MANAGER         7839 09-6月 -81           2450        10      7839 KING       PRESIDENT            17-11月-81           5000        10      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0        30      7900 JAMES      CLERK           7698 03-12月-81            950        30      7902 FORD       ANALYST         7566 03-12月-81           3000        20      7934 MILLER     CLERK           7782 23-1月 -82           1300        10已选择12行。已用时间:  00: 00: 00.03SQL> update test set ename = 'Kingking' where ename ='KING';已更新 1 行。已用时间:  00: 00: 00.04SQL> ed已写入 file afiedt.buf  1  begin  2     UPDATE test SET ename = 'KING' WHERE ename='Kingking';  3     if(SQL%ROWCOUNT>0) then  4     dbms_output.put_line(to_char(SQL%rowcount));  5     END if;  6* end;SQL> /1PL/SQL 过程已成功完成。已用时间:  00: 00: 00.00SQL>
------解决方案--------------------
探讨

1 你可以用sqlplus 命令 set timing on 。不过这个只能给人看看,我不知道能不能获取到。
但 按照兰兰姐那中思路,lz你写两个触发器(before,after)是一定可以获取的;
2 通过隐式游标的属性获得

相关的测试如下:
SQL code
SQL> ed
已写入 file afiedt.buf

1 CREATE TABLE test AS
……
  相关解决方案