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
|