Comment déclarer des variables locales dans postgresql?

Il y a une question presque identique, mais pas vraiment répondu ici .

Je migre une application de MS SQL Server vers PostgreSQL. Dans de nombreux endroits du code, j'utilise des variables locales, donc je voudrais opter pour le changement qui nécessite less de travail, alors pourriez-vous me dire quelle est la meilleure façon de traduire le code suivant?

-- MS SQL Syntax: declare 2 variables, assign value and return the sum of the two declare @One integer = 1 declare @Two integer = 2 select @One + @Two as SUM 

cela renvoie:

 SUM ----------- 3 (1 row(s) affected) 

Je vais utiliser Postgresql 8.4 ou même 9.0 s'il contient des fetaures significatives qui vont simplifier la traduction.

Historiquement, Postgresql ne prend pas en charge le code de procédure au niveau de la command – uniquement dans les fonctions. Cependant, dans Postgresql 9, une prise en charge a été ajoutée pour exécuter un bloc de code en ligne qui prend en charge ce type de problème, bien que la syntaxe soit peut-être un peu étrange et qu'il existe de nombreuses ressortingctions par rapport à SQL Server. Notamment, le bloc de code en ligne ne peut pas returnner un set de résultats, donc ne peut pas être utilisé pour ce que vous avez décrit ci-dessus.

En général, si vous voulez écrire un code de procédure et le renvoyer, vous devez le placer dans une fonction. Par exemple:

 CREATE OR REPLACE FUNCTION somefuncname() RETURNS int LANGUAGE plpgsql AS $$ DECLARE one int; two int; BEGIN one := 1; two := 2; RETURN one + two; END $$; SELECT somefuncname(); 

Le protocole de connection PostgreSQL ne permet pas, pour autant que je sache, des choses comme une command returnnant plusieurs sets de résultats. Vous ne pouvez donc pas simplement mapper des lots T-SQL ou des procédures stockées aux fonctions PostgreSQL.