PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#2 Général » Table temporaire selon une variable » 24/03/2020 13:27:39

YvesZeroSR/F
Réponses : 2

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.

Pied de page des forums

Propulsé par FluxBB