begin process at 2012 02 10 16:31:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive SQL

 > 

Archives

 > 

Problème avec une requête

 > 

SQL* ou PL/SQL PB DE SPOOL


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

SQL* ou PL/SQL PB DE SPOOL

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ée dans : code, sql, error, spool, pl


Répondre à ce message

Sujets en rapport avec ce message

code calendrier sous pl/SQL [ par foloyo3 ] bonjour tout le monde ,je veux avaoir un code sous pl/SQL qui permet de creer un calendrier.merci; calcul des taux pour chacune des ligne de colonne d'une table sur sql [ par toukourou ] Bonjour à tous! J'ai envie de calculer sous sql server un taux pour toutes les lignes correspondant à un code de personne, le taux serait calculer de programmation pl/sql [ par perle00 ] salut tt le monde,pourriez vous me donner une solution à cet exercice?ecrire un bloc PL/SQL permettant d'afficher des informations d'un employé donné. requete PL/SQL [ par nostalgieing ] bonjour je'ai un probleme lors de l'execution d'une requete PL/SQL :j'ai une table avonne dont je veux transformer les noms en majiscules et les preno création des tables avec sql* [ par sparo83 ] Bonjour a vous,voila je créer des tables avec sql* de oracle 9i mais lors de l'utilisation des contraintes,j'ai une erreur comme suit:SQL> create tabl Récupereration par code de l'index et de la clé d'une table SQL / Access [ par FNIAMKE ] Bonsoir Mme/Mr. Comment récuperer l'index et la clé d'une table (SQL ou access) dans une réquête ou par code. Merci de m'apporter assistance. NIAM manipulation des dossier avec PL/SQL [ par salad1976 ] Bonjour; j'ai un petit problème avec pl/sql. voila, je veux répertorier les fichier qui existe dans un dossier (n'importe quel dossier qui existe dans je cherche la solution du TD5 PL/SQL (Module de Base de donnée 2010-2011 Licence d’informatique) [ par ms72713 ] je cherche la solution du TD5 PL/SQL ci-joint (Module de Base de donnée 2010-2011 Licence d’informatique) Module de Base de donnée 2010-2011 Licence REQUETE SQL [ par Eros2007 ] Bonjour tout le monde. voila ma question: j'utilise une requette sql pour pouvoir faire un preview et imprimer par la suite les enregistrements des cl problème avec une requete sql [ par ulysse00 ] bonsoir j'ai une table s'appèle table1 qui contient deux champ code et prix code | prix 100 | 200 300 | 4500 400 | 300 je cherche à fai


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,115 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales