2017-08-31 2 views
0

J'ai écrit une procédure stockée comme suit:procédure stockée pour exporter les données vers un fichier texte dans l'oracle

CREATE OR REPLACE PROCEDURE CROSSMANUFAC IS 
product   prod.product_number%TYPE; 

BEGIN 
DBMS_OUTPUT.enable(); 

delete from product; 
insert into product select unique product_number from prod p where mynumber not in('R44','R76','R79','R20','R02', 
'RY1','R71','R38','R58','RM8','RW8','R74','R73', 
'R99','R72','R19','R33','RN3','R34','RP8','R22', 
'R75','R01','R67','R27','R28','R57','RC5','RW7', 
'RZ9','R77','R07','RW6'); 

commit; 

DBMS_OUTPUT.put_LINE ('No of rows inserted into product '|| SQL%ROWCOUNT); 

delete from ABCD; 

INSERT INTO ABCD(BATCH_LOT_ID,STAGE,DED_DATE,DATE_CODE) 
(SELECT BATCH_LOT_ID,STAGE_FK,to_char(DED_DT, 'YYYYMMDD'),SUBSTR(DT_CD,3,4) FROM DED D WHERE D.product_number_FK IN 
(SELECT * FROM product) and D.FLOG_TRANS_DT_FK =(sysdate -1)); 



commit; 


DBMS_OUTPUT.put_LINE ('No of rows to be pushed to ABCD '|| SQL%ROWCOUNT); 



DBMS_OUTPUT.put_LINE ('FUNLOC   '||' STAGE   ' || 'SEQN_NUM'); 



commit; 

DBMS_OUTPUT.put_LINE ('No of rows to be pushed to ABCD '|| SQL%ROWCOUNT);  


END CROSSMANUFAC; 
/

Je souhaite modifier cette procédure de telle sorte que pour que les données sont exportés à un fichier texte. Comment implémenter cette fonctionnalité et où la modifier dans cette procédure. Merci.

+0

Vous devez spécifier les données que vous souhaitez exporter ... En seulement voir DELETE et INSERT là. Pas de SELECT. –

+0

Salut Thomas, merci de l'avoir souligné à juste titre. En fait, je veux exporter les données de la requête de sélection suivante: SELECT BATCH_LOT_ID, STAGE_FK, à_char (DED_DT, 'YYYYMMDD'), SUBSTR (DT_CD, 3,4) FROM DED D OERE D.product_number_FK IN (SELECT * FROM produit) et D.FLOG_TRANS_DT_FK = (sysdate -1) –

Répondre

0

Ajoutez des commandes de spool après l'insertion de données dans la table, puis ajoutez des commandes de sélection dans la procédure. Donc, il devrait ressembler à quelque chose comme:

insert into product... 
commit; 
spool product.txt; 
select * from product; 
spool off; 
.. 
.. 
insert into ABCD... 
commit; 
spool ABCD.txt; 
select * from ABCD; 
spool off; 
.. 
+0

lors de l'exécution de la requête, spool U: \ output.dat select * from DED_TIBCO_NXP; spool off je reçois l'erreur suivante: ORA-00900: instruction SQL non valide –

+0

Je pense que vous avez manqué un virgule après commande spool –

+0

Toujours la même erreur –