Il est possible qu'on paramètre la création d'une table dans un bloc PL/SQL en utilisant la commande SQL Dynamique EXECUTE IMMEDIATE.
CREATE OR REPLACE PROCEDURE TESTSTRING (String IN Varchar2) AS
Begin
EXECUTE IMMEDIATE String;
end;
On va compiler la procédure et l'exécuter comme suit:
EXEC TESTSTRING(' CREATE TABLE TEST(ID NUMBER, NOM VARCHAR2(30))');
On peut utiliser de la même façon pour supprimer une ou plusieurs lignes. Voici le code:
create or replace procedure EFFACER_ENREG
(Table_Nom in VARCHAR2,
Condition IN VARCHAR2 default NULL)
AS
Clause_Where VARCHAR2(100) := ' WHERE ' || Condition;
Begin
-- Si aucune condition donnée au paramètre, il renvoie la valeur NULL
-- Et il va supprimer tous les enregistrements de la table
IF Condition is NULL then Clause_Where := NULL;
END IF;
EXECUTE IMMEDIATE ' DELETE FROM ' || Table_Nom || Clause_Where;
end;
Pour l'exécuter sans paramètre de condition:
EXEC EFFACER_ENREG('TEST');
Avec un paramètre (une fois que la table soit remplie avec des INSERT INTO):
EXEC EFFACER_ENREG('TEST','ID=1');
Abed
Aucun commentaire:
Enregistrer un commentaire