Я хочу написать функцию, которая добавит запись вставки, а затем вставьте одну или несколько записей в соответствующую таблицу. Я думаю, что знаю, что делать внутри функции, но я не знаю, как должна выглядеть подпись функции.PostgreSQL: Создание функции, которая принимает несколько значений
Вот макет образец:
CREATE TABLE sales(id SERIAL, customer id, sold date);
CREATE TABLE saleitems(SERIAL, sale int, details varchar, price numeric(6,2));
SELECT addSale(42, '2016-01-01',
values ('stuff',13),('more stuff',42),('things',3.14),('etc',0)) items(price,details));
CREATE OR REPLACE FUNCTION addSale(customer,sold,items) RETURNS int AS
$$
-- I think I can handle the rest
$$
LANGUAGE sql;
Решающие пункты:
- Я хотел бы иметь возможность использовать
VALUES (…) name(…)
конструкции в качестве аргумента - это возможно? - Настоящая проблема, я думаю, является последним параметром
items
. Каков соответствующий тип этого? - Я хотел бы, чтобы язык был
SQL
, так как мой следующий шаг - перевести это на другие диалекты (MySQL & SQL Server). Однако я сделаю все, что нужно.
В конце концов я завершу тело кода внутри транзакции и верну новое значение sales.id
.
Вопрос: какой правильный параметр принимать табличное выражение в форме VALUES
?