【问题标题】:Export whole query to a file using stored procedure使用存储过程将整个查询导出到文件
【发布时间】:2017-02-08 06:24:27
【问题描述】:

在使用 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”驱动器中创建的文件

但我需要文件中的完整查询而不是仅仅得到 1013

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

我需要做些什么改变请帮忙。提前致谢!!

【问题讨论】:

标签: stored-procedures triggers db2


【解决方案1】:

没有特殊的寄存器/变量/等。在提供正在执行的 SQL 语句的 DB2 中可用,因此您要求的内容是不可能的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    相关资源
    最近更新 更多