PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como declarar variáveis ​​locais no postgresql?


Postgresql historicamente não suporta código procedural no nível de comando - apenas dentro de funções. No entanto, no Postgresql 9, foi adicionado suporte para executar um bloco de código embutido que efetivamente suporta algo assim, embora a sintaxe seja um pouco estranha e haja muitas restrições em comparação com o que você pode fazer com o SQL Server. Notavelmente, o bloco de código embutido não pode retornar um conjunto de resultados, portanto, não pode ser usado para o que você descreve acima.

Em geral, se você quiser escrever algum código procedural e fazer com que ele retorne um resultado, você precisa colocá-lo dentro de uma função. Por exemplo:
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();

O protocolo de conexão do PostgreSQL, até onde eu sei, não permite coisas como um comando retornando vários conjuntos de resultados. Portanto, você não pode simplesmente mapear lotes T-SQL ou procedimentos armazenados para funções do PostgreSQL.