Bonjour,
Je reviens de nouveau vers vous. Ca fait 1j et demi que je cherche, lis, teste sans succès mon code. Ce dernier doit être simple pour des experts mais là, je m'arrache les cheveux.
Est-il possible d'avoir une correction de ce code? (avec quelques explication?). Je remercie d'avance
Tout ce que je désire, c'est mettre le nom de ma table en mode 'schema.table' dans mon appelle de fonction avec le SELECT, récupérer ça pour ma fonction et faire les requêtes requises qui seront des DROP pour la plupart et quelques create pour une minorité.
mon code:
Pour info, la variable :table_purge viens du script shell primaire qui appelle ce script .sql. A première vue, la variabilisation se fait correctement. C'est son utilisation par la suite qui pose soucis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE or replace FUNCTION maFonction(tarteenpion varchar) RETURNS void AS $$ DECLARE MOIS_MM varchar := to_char(current_timestamp, 'MM'); ANNEE_AAAA varchar := to_char(current_timestamp, 'YYYY'); ANNEE_AA varchar := to_char(current_timestamp, 'YY'); cmd varchar := 'DROP TABLE IF EXISTS ' || tarteenpion || ';' ; BEGIN execute cmd; END; $$ LANGUAGE plpgsql; SELECT maFonction(:table_purge); DROP FUNCTION maFonction(tarteenpion varchar);
Mes différents tests ont été les suivants, sachant que j'ai mis en dur ma variable :table_purge (je mettrai à jour au fur et à mesure mes tests)
- SELECT maFonction(matable); => ERROR: column "matable" does not exist
- SELECT * FROM maFonction(matable); => ERROR: column "matable" does not exist
- SELECT maFonction(schema.matable); => ERROR: missing FROM-clause entry for table "schema"
- SELECT * FROM maFonction(schema.matable); => ERROR: missing FROM-clause entry for table "schema"
- EXECUTE FUNCTION maFonction(schema.matable); => ERROR: syntax error at or near "maFonction"
J'en oublie sûrement aussi.
Voilà, j'espère que quelqu'un pourra m'apporter une correction qui fonctionne.
Partager