将服务器输出假脱机到CSV文件中



我的任务是更新一个相当大的文件,该文件由许多更新和删除语句组成。

首先要检查哪些语句是实际需要/使用的。

我想把它假脱机到一个单独的文件中,但很难把它变成一个好的格式。

例如:

set serveroutput on
spool xxx.csv
update xx set yy where a = b;

创建如下文件:

sql:更新xx。。。。。

更新了1100行。

我最接近我想要的输出是使用类似于的东西

spool xxx.csv
select 'update xx set yy where a = b;' query, count(x) count from xx where (update where clause)

这将很好地工作(除了多行查询(,但它需要重写所有更新/删除语句,而且有很多。

有人知道我该如何最好地解决这个问题吗?最好的结果是一个文件,如:

Query            Count
update xx ...    1100

提前感谢!

您可以使用SQL%ROWCOUNT和以下选项来实现您的需求

DECLARE
l_sql_text  VARCHAR2(32767);
l_sql_count NUMBER;
BEGIN
insert into tttt values(4);
l_sql_count:= SQL%rowcount;
SELECT
(
SELECT t2.sql_fulltext
FROM   v$sql t2
WHERE  t1.prev_sql_id = t2.sql_id
AND    t1.prev_child_number = t2.child_number ) prev_sql_fulltext
INTO   l_sql_text
FROM   v$session t1
WHERE  t1.audsid = Sys_context('userenv', 'sessionid');
dbms_output.put_line('Query,Count');
dbms_output.Put_line(l_sql_text
||','
||l_sql_count);
END;

输出

Query,Count
INSERT INTO TTTT VALUES(4),1

最新更新