438 votes

Comment déclarer une variable dans une requête PostgreSQL ?

Comment déclarer une variable à utiliser dans une requête PostgreSQL 8.3 ?

Dans MS SQL Server, je peux le faire :

DECLARE @myvar INT
SET @myvar = 5

SELECT *
FROM somewhere
WHERE something = @myvar

Comment faire la même chose dans PostgreSQL ? Selon la documentation, les variables sont déclarées simplement comme "nom type ;", mais cela me donne une erreur de syntaxe :

myvar INTEGER;

Quelqu'un pourrait-il me donner un exemple de la syntaxe correcte ?

3 votes

Cela peut se faire uniquement avec PostgreSQL. Voir la réponse à cette question connexe : stackoverflow.com/questions/766657/

4 votes

Cette réponse connexe contient de meilleures réponses : stackoverflow.com/questions/13316773/

11voto

Martin Zinovsky Points 1854

Voici un exemple utilisant Préparer les déclarations . Vous ne pouvez toujours pas utiliser ? mais vous pouvez utiliser $n la notation :

PREPARE foo(integer) AS
    SELECT  *
    FROM    somewhere
    WHERE   something = $1;
EXECUTE foo(5);
DEALLOCATE foo;

9voto

The Coder Points 269

Dans DBeaver, vous pouvez utiliser les paramètres dans les requêtes comme vous le faites dans le code, donc cela fonctionnera :

SELECT *
FROM somewhere
WHERE something = :myvar

Lorsque vous exécutez la requête, DBeaver vous demande la valeur de :myvar et exécute la requête.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X