2017-02-08 1 views
0

Besoin d'aide pour obtenir une requête sur un fichier texte en utilisant la procédure stockée dans db2. Je suis très nouveau à ce sujet alors s'il vous plaît aider. Jusqu'à présent, je suis capable de créer un fichier et obtenir des données dans le fichier créé. Mais je veux une requête complète dans le fichier pas une seule colonne de données.Exporter une requête entière dans un fichier à l'aide de la procédure stockée

J'ai créé un procédure stockée comme celui-ci

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 

et j'ai créé un déclencheur à l'intérieur déclencheur j'appelle la procédure stockée

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 

instruction d'insertion je suis exécutais

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

Et le fichier qui crée dans le lecteur "D" je reçois

enter image description here

Mais au lieu d'obtenir i besoin de la 1 013 requête complète dans le fichier

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

Quels sont les changements que je dois faire s'il vous plaît aider. Merci d'avance!!

+1

Votre autre question est-elle toujours nécessaire? Sinon, supprimez. http://stackoverflow.com/questions/42089402/trigger-to-write-all-insert-updates-queries-to-file –

Répondre

1

Il n'y a pas de registres spéciaux/variables/etc. disponible dans DB2 qui fournit l'instruction SQL en cours d'exécution, ce que vous demandez n'est donc pas possible.