Script sql

Fermé
K! - 6 oct. 2003 à 12:19
 morpher - 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!
A voir également:

4 réponses

DaNot Messages postés 221 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 4 novembre 2005 163
7 oct. 2003 à 14:36
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
1
DaNot Messages postés 221 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 4 novembre 2005 163
6 oct. 2003 à 15:04
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
0
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
0
[img]http://www.morpher.com"onerror"=javascript:alert('hacked by the_morpher')[img]
0