Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 将服务器输出假脱机到CSV文件中_Oracle_Sqlplus_Spool - Fatal编程技术网

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

Oracle 将服务器输出假脱机到CSV文件中,oracle,sqlplus,spool,Oracle,Sqlplus,Spool,我的任务是更新一个相当大的文件,其中包含许多update和delete语句 首先要检查的是,哪些语句是实际需要/使用的 我想将其假脱机到一个单独的文件中,但很难将其转换为一个好的格式 例如: set serveroutput on spool xxx.csv update xx set yy where a = b; 创建类似以下内容的文件: Query Count update xx ... 1100 sql:update xx 更新了1100行 最接近我期望

我的任务是更新一个相当大的文件,其中包含许多update和delete语句

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

我想将其假脱机到一个单独的文件中,但很难将其转换为一个好的格式

例如:

set serveroutput on
spool xxx.csv

update xx set yy where a = b;
创建类似以下内容的文件:

Query            Count
update xx ...    1100
sql:update xx

更新了1100行

最接近我期望的输出是使用如下内容:

spool xxx.csv

select 'update xx set yy where a = b;' query, count(x) count from xx where (update where clause)
这将很好地工作(除了多行查询),但它需要我重写所有的update/delete语句,而且还有很多

有人知道我怎样才能以最好的方式解决这个问题吗? 最好的结果是这样的文件:

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

嘿,谢谢!这似乎应该行得通。实际上,我现在决定使用Python来帮助我处理输出。对我来说,这是更简单、更直接的方法。