Probleme création fonction avec code sql
Bonjour à tous,
Je me lance dans la création de fonction Postgresql afin de pouvoir les appeler ensuite d'un autre outil (Talend). J'ai souhaité commencer avec quelque chose de simple mais que je n'arrive pas a faire fonctionner : une fonction qui vide la table entrée en argument. Ma table de test s'appelle test_2. Evidemment, quand je la vide via une commande SQL (DELETE FROM test_2), aucun souci particulier. Voici le code de ma fonction qui est censée faire la même chose :
Code:
1 2 3 4 5 6 7 8 9
| CREATE OR REPLACE FUNCTION public.fonction_test(table_name name)
RETURNS void AS
$BODY$BEGIN
DELETE FROM table_name;
END$BODY$
LANGUAGE plpgsql VOLATILE STRICT
COST 100;
ALTER FUNCTION public.fonction_test(name)
OWNER TO postgres; |
Quand je l'execute avec ma table test_2 en argument ( SELECT fonction_test(test_2) ); voici le résultat :
Citation:
ERREUR: la colonne « test_2 » n'existe pas
LINE 1: SELECT fonction_test(test_2);
^
********** Erreur **********
ERREUR: la colonne « test_2 » n'existe pas
État SQL :42703
Caractère : 22
--> Je n'arrive pas a comprendre pourquoi mon argument est interprété comme un nom de colonne au lieu d'un nom de table....
En entrant l'argument entre guillemet simple ( SELECT fonction_test('test_2') ), le résultat est différent :
Citation:
ERREUR: la relation « table_name » n'existe pas
LINE 1: DELETE FROM table_name
^
QUERY: DELETE FROM table_name
CONTEXT: fonction PL/pgsql fonction_test(name), ligne 2 à instruction SQL
********** Erreur **********
ERREUR: la relation « table_name » n'existe pas
État SQL :42P01
Contexte : fonction PL/pgsql fonction_test(name), ligne 2 à instruction SQL
Est ce que quelqu'un aurez une solution a me proposer svp ?