Vous n'êtes pas identifié(e).
Pages : 1
Merci Julien, c'est nickel.
Yves.
Bonjour à tous et à toutes,
Je débute sur postgresql et je bloque sur un point qui me semble pourtant simple (du moins simple sur SQL Server).
Je cherche dans une procédure à créer une table temporaire avec un nom spécifique selon des paramètres passés à ma procédure (la procédure pouvant être appelée par plusieurs utilisateurs il me faut un nom différent à chaque utilisateur).
Je fais la concaténation de trois chaines pour nommer ma table temporaire mais quand j'appelle ma table elle porte le nom de ma variable et non pas sa valeur.
Ci-joint le début du code que j'ai épuré un peu pour être plus simple à lire :
CREATE OR REPLACE PROCEDURE public.proc_recherchepiecesselonfournisseursetdepot(
scodefournisseur character varying, scodedepot character varying, sutilisateur character varying)
LANGUAGE 'plpgsql'
AS $BODY$
DECLARE
Reference varchar(20);
sNomTableTemp varchar(50);
curseur_Fournisseur CURSOR FOR
SELECT
"Reference"
FROM "PIECE"
WHERE "CodeFournisseur" = scodefournisseur
AND "CodeDepot" = scodedepot;
BEGIN
sNomTableTemp = CONCAT(scodefournisseur, '_', scodedepot, '_', sutilisateur);
DROP TABLE IF EXISTS sNomTableTemp;
CREATE TEMPORARY TABLE sNomTableTemp (
Reference varchar(20)
);
... etc
Ensuite je travaille sur mon curseur pour insérer les données dans ma table temporaire.
Ensuite j'exécute ma procédure avec des paramètres :
CALL proc_RecherchePiecesFournisseurSelondepot('AZ', 'AAA', 'Yves');
Quand je veux voir mes données cela marche avec SELECT * FROM "sNomTableTemp"; mais pas avec SELECT * FROM "AZ_AAA_Yves";
Dans la procédure que je mette ou pas les "" c'est la même chose.
Quelqu'un aurait-il une idée de la bonne méthode ou d'où mon problème peut venir ?
Merci d'avance pour votre aide.
Yves.
Pages : 1