使用存储过程将整个查询导出到文件

时间:2017-02-08 06:24:27

标签: stored-procedures triggers db2

需要有关使用db2中的存储过程获取文本文件查询的帮助。我对此非常陌生,所以请帮助。

直到现在我能够创建一个文件并获取创建文件中的数据。但我希望文件中的完整查询不是单个列数据。

我创建了一个像这样的存储过程

 CREATE or replace PROCEDURE SCOPEMASTERP(my_statement varchar(10000))
AUTONOMOUS
BEGIN
  DECLARE v_filehandle    UTL_FILE.FILE_TYPE;
  DECLARE v_dirAlias      VARCHAR(50) DEFAULT 'mydir';
  DECLARE v_filename      VARCHAR(100) DEFAULT 'bluestar_transaction-';
  DECLARE v_format        VARCHAR(200);
  SET v_format = '%s\n';

  set v_filename = concat(v_filename, VARCHAR_FORMAT(current_date, 'DD-MM-YYYY'));
  set v_filename = concat(v_filename, '.log');
  CALL UTL_DIR.CREATE_OR_REPLACE_DIRECTORY('D:', '/archivelog/asd/');
  SET v_filehandle = UTL_FILE.FOPEN(v_dirAlias,v_filename,'a');
  CALL UTL_FILE.PUTF(v_filehandle,v_format, my_statement);
  CALL DBMS_OUTPUT.PUT_LINE('Wrote to file: ' || v_filename);
  CALL UTL_FILE.FCLOSE(v_filehandle);
END

我在触发器内创建了一个触发器,我正在调用存储过程

 CREATE OR REPLACE TRIGGER SCOPEMASTER_Trigger
     AFTER INSERT ON SERVEIT.SCOPENAMEMASTER
     REFERENCING NEW AS N
     FOR EACH ROW
     BEGIN ATOMIC

 call SCOPEMASTERP(N.SCOPENAMEID);
     END

插入语句我正在执行

 Insert into SERVEIT.SCOPENAMEMASTER (SCOPENAMEID) values (1013)
GO

在" D"中创建的文件我正在开车

enter image description here

但不是仅仅获取1013我需要文件中的完整查询

Insert into SERVEIT.SCOPENAMEMASTER (SCOPENAMEID) values (1013)

我需要做些什么改变请帮忙。在此先感谢!!

1 个答案:

答案 0 :(得分:1)

没有特殊的寄存器/变量/等。在DB2中可用,它提供正在执行的SQL语句,因此您无法提出要求。

相关问题