Как объявить локальные переменные в postgresql?

Существует почти идентичен, но не вопрос, на который действительно отвечают, здесь.

Я перемещаю приложение от SQL Server MS до PostgreSQL. Во многих местах в коде я использую локальные переменные, таким образом, я хотел бы пойти для изменения, которое требует меньшего количества работы, таким образом, Вы могли сказать мне, который является лучшим способом перевести следующий код?

-- 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

это возвращается:

SUM
-----------
3

(1 row(s) affected)

Я буду использовать Postgresql 8.4 или даже 9.0, если он будет содержать значительный fetaures, который упростит перевод.

49
задан Community 23 May 2017 в 02:09
поделиться

1 ответ

Postgresql исторически не поддерживает процедурный код на уровне команд - только внутри функций. Однако в Postgresql 9 добавлена ​​поддержка выполнения встроенного блока кода , который эффективно поддерживает что-то подобное, хотя синтаксис, возможно, немного странный, и существует множество ограничений по сравнению с тем, что вы можете делать с SQL Server. Примечательно, что встроенный блок кода не может возвращать набор результатов, поэтому его нельзя использовать для того, что вы описали выше.

В общем, если вы хотите написать какой-то процедурный код и получить результат, вам нужно поместить его в функцию. Например:

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();

Насколько мне известно, проводной протокол PostgreSQL не позволяет использовать такие вещи, как команда, возвращающая несколько наборов результатов. Таким образом, вы не можете просто сопоставить пакеты T-SQL или хранимые процедуры с функциями PostgreSQL.

74
ответ дан 7 November 2019 в 11:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: