參考:《postgresql 9.6.0 手冊》
--無引數,返回void
create function delete_order() returns void as $$ --記得加括號
delete from customer_order
where product_price < 21; $$ language sql; --注意有兩個封號
select delete_order(); --用select執行函式
create function muti(x integer,y integer) returns integer as $$ --注意returns有個『s』,別漏了
select x*y; $$ language sql;
select muti(4,5);
再乙個例子:設定某個訂單產品數量,並返回該訂單總價 。
create function edit_order(order_id integer,order_num integer) returns integer as $$
update customer_order
set order_num=edit_order.order_num --order_num引數與表customer_order重複
where order_id=edit_order.order_id; --每條sql語句後面都要記得加封號,『;』
select order_id*order_num; $$ language sql; --本來想order_id*order_price
--據說還可以用returning返回,不知道啥區別
select edit_order(4,1000);
(1)組合型別作為引數
create function get_price(product) returns integer as $$ --此時的product標識product組合型別,而不是product表
select $1.product_price::integer; $$ language sql;
select product_name,get_price(product.*) from product; --注意product.*的用法
(2)組合型別作為返回值(返回乙個表中,滿足條件的行)
create function get_a_line(product_id integer) returns product as $$
select product_id, product_price, product_name from product
where product_id = get_a_line.product_id; $$ language sql;
select get_a_line(2);
create function add_stdout(in x integer,in y integer,out sum integer, out muti integer)
as $$ select x+y,x*y; $$ language sql;
select product_name, add_stdout(product_price::integer,product_id) from product;
--跳過~
create function discount_for_vip(product_price real,order_num integer,discount numeric default 0.8)
returns numeric as $$
select (product_price*order_num*discount_for_vip.discount)::numeric from customer_order; $$ language sql;
select order_id , discount_for_vip(product_price,order_num,0.9) from customer_order;
select order_id , discount_for_vip(product_price,order_num) from customer_order; --使用預設的折扣率
所有的 sql 函式都可以被用在查詢的from子句中,其中,返回組合型別的函式特別有用,本部分跳過~
本部分跳過~
PostgreSQL 學習總結
xy copy 命令用於批量的資料匯入或匯出 c 介面如下 主要為一下三個函式 pres pqexec pconn,strsql.c str pqputcopydata pconn,strbuf.c str strbuf.length pqputcopyend pconn,strerrormsg 其...
CentOS學習日記 PostgreSQL篇
本文記錄postgresql在centos 6.7上安裝 配置 使用等方面的資料以及操作過程。一 準備工作 1 centos 6.7 2 網路ok 二 安裝 使用yum安裝postgresql。1 yuminstallpostgresql 三 初始化 當成功安裝好postgresql後,根據官網說明...
CentOS6 安裝PostgreSQL 10步驟
公升級 yum yum y update 安裝vim yum install y vim centos6,postgresql 10 yum y install 客戶端 yum y install postgresql10 服務端 yum y install postgresql10 server ...