1
挿入レコードを追加し、関連するテーブルに1つ以上のレコードを挿入する関数を記述したいと思います。私は関数内で何をすべきかを知っていると思いますが、関数の署名がどのように見えるかはわかりません。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
です。これにはどのような種類がありますか? - 次のステップはこれを他の方言(MySQL & SQL Server)に翻訳することですので、言語を
SQL
にします。しかし、私は必要なことを何でもします。
最終的にコード本体をトランザクション内にラップし、新しいsales.id
値を返します。
問題はVALUES
フォームのテーブル式を受け入れるための正しいパラメータは何ですか?
CREATE TYPE product_details AS (
details varchar,
price numeric(6,2)
);
は、その後、あなたがタイプproduct_details[]
の関数パラメータを定義することができ、製品の詳細情報のすなわち配列: