PostgreSQL學習 6 SQL函式

2021-09-25 16:02:52 字數 2332 閱讀 5094

參考:《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 ...