Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : SQL* ou PL/SQL PB DE SPOOL [ Archives / Problème avec une requête ] (neena)

mardi 24 janvier 2006 à 11:19:41 | SQL* ou PL/SQL PB DE SPOOL

neena

Salut,

Je ne sais pas si vous pouvez aider mais je vous explique mon petit pb : Je dois ecrire via une requete dans un fichier txt mais je dois faire ça dans une procedure en pl/sql.
1- ma requete seule marche, elle me creer mon fichier
2-des que je la met dans une procedure pl/sql elle ne marche plus.Apparemment il n'aime pas le spool ou les set...

Si vous avez une idée je prend....merci de m'avoir lu....

voila le code :

CREATE OR REPLACE procedure custom.create_file_error1 IS

BEGIN

set echo off
set heading off
set feedback off
set linesize 1200
set pagesize 10000


SPOOL "C:\koko";
SELECT EMS.IBO_ERROR_CODE.OBJECT_NAME ||'='|| EMS.IBO_ERROR_CODE.ERROR_VALUE
FROM EMS.IBO_ERROR_CODE
ORDER BY EMS.IBO_ERROR_CODE.OBJECT_NAME;
SPOOL OFF

END;
/


debutante un jour, confirmer pour toujours!!!


mardi 24 janvier 2006 à 20:30:35 | Re : SQL* ou PL/SQL PB DE SPOOL

cmart

Hello,
sqlplus est un outil qui permet d'exécuter une requête dans une base Oracle.
Ainsi , les ordres :
  • set echo off,
  • set heading off
  • set feedback off
  • set linesize 1200
  • set pagesize 10000
sont des ordres de configuration de sqlplus. Ce n'est en aucun cas du PL/SQL et à fortiori du SQL.
Idem pour le SPOOL que permet de rediriger la sortie standard dans un fichier.

En pl/sql écrire dans un fichier est nettement plus "sportif" !

Il faut utiliser un package système nommé : UTL_FILE qui permet d'écrire dans des répertoires spécifiques et autorisés par la base de donnée elle même. (question de sécurité). Pour savoir lesquels, il faut regarder dans la vue systeme ALL_DIRECTORIES.

je vois plutôt la procédure comme suit :

CREATE OR REPLACE procedure custom.create_file_error1 IS

BEGIN

   w_file       utl_file.file_type;     -- reference du fichier
   w_line       VARCHAR2(4096);         -- ligne du fichier
   w_directory  VARCHAR2(100);          -- repertoire du fichier
   w_fichier    VARCHAR2(50);           -- nom du fichier

   CURSOR curseur IS  -- curseur pour contituer les lignes du fichier
      SELECT EMS.IBO_ERROR_CODE.OBJECT_NAME ||'='|| EMS.IBO_ERROR_CODE.ERROR_VALUE  AS LIGNE
        FROM EMS.IBO_ERROR_CODE
       ORDER BY EMS.IBO_ERROR_CODE.OBJECT_NAME;
BEGIN
   w_directory := 'c:/mydir'; -- attention ce repertoire doit être un des répertoires autorisés par la base !
   w_fichier   := 'koko.txt';
   w_file := utl_file.fopen(w_directory, w_fichier, 'w'); -- ouverture en écriture
   IF utl_file.is_open(w_file) THEN
      FOR ma_selection IN curseur LOOP  -- pour faire au plus simple !
         utl_file.put_line(w_file, ma_selection.ligne); --écriture d'une ligne avec retour charriot
      END LOOP;
      utl_file.fclose(w_file); -- fermeture du fichier
   END IF;

--   ..suite du code si besoin (attention au traitement des exceptions Oracle!!)

END;


Attention hein ! c'est pas du 'pur' béton ! je ne l'ai ni compilé, ni exécuté car je n'ai pas de base Oracle dipo sous la main, néanmoins l'idée directrice est la bonne.

La documentation Oracle est en ligne sur : http://www.oracle.com/pls/db102/portal.portal_db?selected=5
il faut s'enregistrer pour pouvoir télécharger la doc au format PDF. c'est gratuit.

Bon courage.
Cmart




mardi 24 janvier 2006 à 21:23:00 | Re : SQL* ou PL/SQL PB DE SPOOL

neena

Merci Cmart,

Je vais voir, demain matin, si ton code fonctionne, merci de m'avoir répondu si rapidement, jespere y arriver...

:)

neena


debutante un jour, confirmer pour toujours!!!

mardi 24 janvier 2006 à 22:16:30 | Re : SQL* ou PL/SQL PB DE SPOOL

dba_votre_service

Salut,

n'oublies pas la section qui précise ce que tu dois ajouter au init.ora pour autoriser l'accès en écriture à un disque depuis la base de données...si tu utilises une version antérieure à la 9.2. Peut-être que tu devras demander d'ajouter la section par ton dba préféré.

Le lien suivant en parle:
[ Lien ]

Cordialement.

mercredi 25 janvier 2006 à 09:36:12 | Re : SQL* ou PL/SQL PB DE SPOOL

neena


Alors je suis désolée de vous avoir fait reflechir la dessus, mais mon boss prefere que je fasse une requete dans un fichier.sql et que je l'appelle via un script shell donc je plus besoin de passer par des commande oracle, je reste sous sqlplus.

Encore merci....


neena

 
debutante un jour, confirmer pour toujours!!!



Cette discussion est classé dans : code, sql, error, spool, pl


Répondre à ce message

Sujets en rapport avec ce message

Gestion d'erreur [ par karn ] Bonjour,Je n'arrive pas a gérer mon erreur sur le sql suivant:EXEC (@Sql_total)PRINT @@ERRORIF @@ERROR 0PRINT 'Requete mal construite'@@error est touj le code sql [ par qerty21 ] je veux exporter les enregistrements d'une table dans un fichier .txt avec le code sql. Merci d'avence Revue de code SQL [ par littlemarley ] Bonjour,Je recherche une maniere de revoir mon code SQL : un soft qui permette par exemple de verifier les textes interdits : j'indique que je ne veu pl /sql fichier en ligne de commande [ par lenneth666 ] commetn en pl /sql je recupère le nom d'un fichier entrée en ligne de commande ? merci d'avance Error PLS-00103 dans une procédure stockée [ par KeyboardMen ] Bonjour dans le cadre d'un TP sous Oracle.Je butte sur un problème depuis un bout de temps et l'erreur suivante :ERROR at line 17: PLS-00103: Encounte erreur avec le DTS [ par Nyana ] Salut, je voulais integrer des donnees de MS-Access dans une base sql Server en utilisant le wizard de DTS.J'ai eu des erreurs, voici le rapport:Opera Erreur lors de la connexion à la base de donnée [ par AmK ] Bonsoir , J'ai rencontré des difficultés lors de la connexion à mon instance SQLExpress.En lançant SQL Server Manager (SSMS) , et en tentant de m'y co PL/SQL (web toolkit) [ par monsurf ] Salut tout le monde,Je cree des pages qui permettent la manipulation d'une db oracle...et je veux proteger certaine pages (insertion/modification) par Traitement des chaînes en PL/SQL ? [ par mascoco ] Bonjour,Je suis nouveau en PL/SQL, je souhaite faire un petit programme en pl/sql qui extrait les données à partir d'une page HTML grâce au package UT sql tri?!!! [ par abari ] salut tout le mondej'ai un probléme de tri?!!! dans ma table les enregistrement sont stockées d'une facon des ordonnées comme suit:code nom prénom


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,20 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.