[SQL] Utilisation de variable dans une requête
Bonjour à tous,
Je suis en train d'apprendre sur le tas le scripting en SQL.
Mon but est de créer un ensemble de script SQL qui seront appelé par un script shell.
Pour info: je suis en postgres 9.4 avec Linux
En premier lieu, j'ai réussit à envoyer mes variables shell lors de mon appel via : psql "param_connexion" -f ./script.sql -v var1=${var1} -v var2=${var2}
Tout marche bien. Dans mon script.sql j'utilise ensuite les variables précédées d'un ':'
Code:
CREATE TABLE :var1 AS TABLE :var2 WITH NO DATA
Tout va bien de ce coté :)
Mon problème est en second [je vous mets en exemple mon script poubelle de test)
En effet, pour éviter de passer en paramètres 40 variables, j'ai décidé de les mettre dans le script .sql. Il s'agit surtout d'utiliser les dates (année, mois sur 2 ou 4 caractères). J'ai fait mes petites recherches et j'en arrive au bloc suivant
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| CREATE or replace FUNCTION maFonction() RETURNS void AS $$
DECLARE
quantité3 integer := to_char(current_timestamp, 'MM');
quantité4 integer := to_char(current_timestamp, 'YYYY');
quantité5 integer := to_char(current_timestamp, 'YY');
BEGIN
RAISE NOTICE 'quantité vaut ici %', quantité3;
RAISE NOTICE 'quantité vaut ici %', quantité4;
RAISE NOTICE 'quantité vaut ici %', quantité5;
CREATE TABLE schema.toto_quantité4 AS TABLE schema.table WITH NO DATA;
END;
$$ LANGUAGE plpgsql;
SELECT maFonction();
DROP FUNCTION maFonction(); |
J'arrive à appeler mes variables déclarées dans les RAISE mais je n'arrive pas à l'utilise pour mon CREATE (en gras rouge).
J'ai tenté avec un ':' avant ; ':' avant/après et même '@' avant. Rien n'y fait. J'avais lu ça pour intégrer des valeurs avec un INSERT INTO donc j'ai tenté.
Comment faire pour utiliser mes variables déclarée comme je le souhaite?
Merci de votre aide :)