2017-02-08 8 views
0

Нужна помощь при получении запроса в текстовом файле с использованием хранимой процедуры в 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

Ваш другой вопрос по-прежнему необходим? Если нет, удалите. http://stackoverflow.com/questions/42089402/trigger-to-write-all-insert-updates-queries-to-file –

ответ

1

Нет специальных регистров/переменных/и т. Д. доступный в DB2, который предоставляет исполняемый оператор SQL, поэтому то, что вы просите, невозможно.