Mega Code Archive

 
Categories / PostgreSQL / Store Procedure Function
 

Use defined data type as the function parameter

postgres=# postgres=# CREATE TYPE inventory_item AS ( postgres(#    name            text, postgres(#    supplier_id     integer, postgres(#    price           numeric postgres(# ); CREATE TYPE postgres=# postgres=# CREATE TABLE on_hand ( postgres(#    item      inventory_item, postgres(#    count     integer postgres(# ); CREATE TABLE postgres=# postgres=# INSERT INTO on_hand VALUES (ROW('fuzzy dice', 42, 1.99), 1000); INSERT 0 1 postgres=# postgres=# select * from on_hand;           item          | count ------------------------+-------  ("fuzzy dice",42,1.99) |  1000 (1 row) postgres=# postgres=# postgres=# CREATE FUNCTION price_extension(inventory_item, integer) RETURNS numeric postgres-# AS 'SELECT $1.price * $2' LANGUAGE SQL; CREATE FUNCTION postgres=# postgres=# select price_extension(ROW('fuzzy dice', 42, 1.99), 1000);  price_extension -----------------          1990.00 (1 row) postgres=# postgres=# drop function price_extension(inventory_item, integer); DROP FUNCTION postgres=# drop table on_hand; DROP TABLE postgres=# drop type inventory_item; DROP TYPE postgres=# postgres=#