[PLSQL] problème dans un script dynamique

problème dans un script dynamique [PLSQL] - SQL/NoSQL - Programmation

Marsh Posté le 25-08-2003 à 18:34:30    

Bonjour,
 
J'ai fait un petit script dynamique en Pl, et je ne comprend pas pourquoi j'ai une erreur :(
 
voici le script :
 
CREATE OR REPLACE PROCEDURE Ajout_Table
        (v_NomTable IN VARCHAR2) AS
 
CURSOR c_Loader IS
        SELECT * FROM LOADER;
 
v_Loader loader%ROWTYPE;
v_SQLString VARCHAR2(1100);
BEGIN
        IF c_Loader%ISOPEN
        THEN
                CLOSE c_LOADER;
        END IF;
        DBMS_OUTPUT.put_line(v_NomTable);
        OPEN c_Loader;
                LOOP
                        FETCH c_Loader INTO v_Loader;
                        EXIT WHEN c_Loader%NOTFOUND;
                        v_SQLString :=
                                'CREATE TABLE ' || v_NomTable
 
                         .............. (ce qu'il y a dans mon create)
 
                                 v_NomTable || '_LOADER_5 NUMBER(8));';
        DBMS_OUTPUT.put_line(v_SQLString);
 
                        EXECUTE immediate v_SQLString;
                        COMMIT;
                END LOOP;
        CLOSE c_Loader;
END;
/
 
Lorsque je lance la procédure :
 
exec Ajout_Table('lol')
 
 
voici ce que j'obtient :
 
SQL> @Ajout_Table
 
Procedure created.
 
lol
CREATE TABLE lol ( lol_NUM_ID NUMBER, lol_NOM VARCHAR2(20), lol_DATE DATE,
lol_LOADER_1 NUMBER(6,2), lol_LOADER_2 NUMBER(6,2), lol_LOADER_3 NUMBER(6,2),
lol_LOADER_4 NUMBER(6,2), lol_LOADER_5 NUMBER(8));
BEGIN Ajout_Table('lol'); END;
 
*
ERROR at line 1:
ORA-00911: invalid character
ORA-06512: at "JOKOS.AJOUT_TABLE", line 30
ORA-06512: at line 1
 
 
Il y a donc un problème au niveau de mon EXECUTE IMMEDIATE .
 
Si quelqu'un voit le problème, merci de me répondre.
 
ciao
 
jokos

Reply

Marsh Posté le 25-08-2003 à 18:34:30   

Reply

Marsh Posté le 25-08-2003 à 19:18:03    

jokos a écrit :

Bonjour,
 
J'ai fait un petit script dynamique en Pl, et je ne comprend pas pourquoi j'ai une erreur :(
 
voici le script :
 
CREATE OR REPLACE PROCEDURE Ajout_Table
        (v_NomTable IN VARCHAR2) AS
 
CURSOR c_Loader IS
        SELECT * FROM LOADER;
 
v_Loader loader%ROWTYPE;
v_SQLString VARCHAR2(1100);
BEGIN
        IF c_Loader%ISOPEN
        THEN
                CLOSE c_LOADER;
        END IF;
        DBMS_OUTPUT.put_line(v_NomTable);
        OPEN c_Loader;
                LOOP
                        FETCH c_Loader INTO v_Loader;
                        EXIT WHEN c_Loader%NOTFOUND;
                        v_SQLString :=
                                'CREATE TABLE ' || v_NomTable
 
                         .............. (ce qu'il y a dans mon create)
 
                                 v_NomTable || '_LOADER_5 NUMBER(8));';
        DBMS_OUTPUT.put_line(v_SQLString);
 
                        EXECUTE immediate v_SQLString;
                        COMMIT;
                END LOOP;
        CLOSE c_Loader;
END;
/
 
Lorsque je lance la procédure :
 
exec Ajout_Table('lol')
 
 
voici ce que j'obtient :
 
SQL> @Ajout_Table
 
Procedure created.
 
lol
CREATE TABLE lol ( lol_NUM_ID NUMBER, lol_NOM VARCHAR2(20), lol_DATE DATE,
lol_LOADER_1 NUMBER(6,2), lol_LOADER_2 NUMBER(6,2), lol_LOADER_3 NUMBER(6,2),
lol_LOADER_4 NUMBER(6,2), lol_LOADER_5 NUMBER(8));
BEGIN Ajout_Table('lol'); END;
 
*
ERROR at line 1:
ORA-00911: invalid character
ORA-06512: at "JOKOS.AJOUT_TABLE", line 30
ORA-06512: at line 1
 
 
Il y a donc un problème au niveau de mon EXECUTE IMMEDIATE .
 
Si quelqu'un voit le problème, merci de me répondre.
 
ciao
 
jokos


Enleve le ";" après

Citation :


                                 v_NomTable || '_LOADER_5 NUMBER(8))


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
Reply

Marsh Posté le 25-08-2003 à 23:04:06    

merciiiiii !!!!!!!!!!
 
jokos

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed