Я перехожу к postgreSQL из MSSQL и все еще разрабатываю синтаксис процедурного программирования. Идея состоит в том, чтобы создать функцию, которая будет принимать таблицу как входной/параметр, выполнить серию операторов SELECT
против этой входной таблицы (без временных таблиц, операторы SELECT
будут выполняться с CTE) и RETURN
финальной таблицы.Передать таблицу функции postgreSQL, выполнить оператор выбора, таблицу возврата
таблица ввода будет очень просто:
Col_1 Col_2 Col_3
----------------------------
2 5 12
Я хочу использовать каждое из полей в таблице ввода для вычисления числа (в данном примере, суммируя Col_1
, Col_2
и Col_3
), добавьте это к входной таблицы, и создать таблицу вывода, которая появляется как таковой:
Col 1 Col_2 Col_3 Col_4
---------------------------------------
2 5 12 19
Моя попытка кода:
CREATE OR REPLACE FUNCTION summing_function(input_table)
RETURNS output_table(Col_1 INT, Col_2 INT, Col_3 INT, Col_4 INT) AS
$$
SELECT
i.*
, i."Col_1" + i."Col_2" + i."Col_3" as sum
INTO output_table
FROM input_table i
$$
LANGUAGE SQL;
Очевидно, что все между котировками доллара является неполным/неправильным. Каков правильный синтаксис postgreSQL для куска между долларовыми котировками?
Не вид, что вы хотите использовать вместо этого? (этот вопрос не означает, что вы должны использовать представление, но реальный вопрос от меня, чтобы понять, почему представление не может быть правильным инструментом для использования здесь) –
Вид может быть лучшим решением. Я просто пытался выяснить некоторые общие синтаксисы и ограничения postgreSQL. –