Bonjour à tous,
Je commence tout juste à coder en PL / pgSQL et je rencontre quelques problèmes avec ma première fonction.
Elle prend trois paramètres en entrée. J'aimerais qu'elle me renvoie une table en sortie, enregistrée dans un schéma de ma base de données. Le problème, c'est que je voudrais que le nom de cette table change en fonction des paramètres entrés dans ma fonction : plus précisément je voudrais que le nom de ma table soit en partie constitué de ces paramètres.
Le but de la manoeuvre est que l'utilisateur n'ait qu'à appeller la fonction pour que celle-ci lui crée automatiquement une table dans la BD, dont le nom rappelle ceux placés en entrée de la fonction.
Malheureusement je ne trouve pas la solution à mon problème.
J'avais déjà réussi à automatiser quelque chose de similaire dans la création de noms de fichiers sous R, mais j'ignore si c'est possible sous PL / pgSQL..?
J'ai essayé quelque chose avec la commande EXECUTE... INTO..., sans succès.
Voici la structure de ma fonction :
Merci d'avance pour votre aide, vos réponses ou redirections éventuelles,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 CREATE OR REPLACE FUNCTION circles_traj ( nb_tours integer , ioe boolean , index integer DEFAULT 0 ) RETURNS TABLE ( id integer , cumul_abs_angle real ) AS $$ BEGIN -- Succession de conditions pour selectionner des éléments dans des tables préexistantes EXECUTE 'SELECT * from circles_traj($1,$2,$3)' INTO plane.'$1||''_tours''||'_'||$3'; -- Ici, je voudrais créer ma table dont le nom pourrait être par exemple "3_tours_1" dans mon schéma "plane". -- La ligne précédente renvoie le message d'erreur suivant : ERREUR: « plane » n'est pas une variable connue État SQL :42601 Caractère : 3248 END; $$ LANGUAGE plpgsql; -- Ou bien il faut créer la table en dehors de la fonction ? Mais alors comment nommer cette table à partir des paramètres d'entrée de la fonction ? CREATE TABLE plane.nom AS SELECT * from circles_traj(3,FALSE,3);
Mousta
Partager