problème dans un script dynamique [PLSQL] - SQL/NoSQL - Programmation
MarshPosté 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
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
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