作者:彭沖
PostgreSQL風格
create or replace function months_between()
returns number
as $function$
begin
return 0;
exception when …
end;
$function$ language plpgsql;
Oracle風格
create or replace function months_between()
return number
as
begin
return 1;
exception when …
end;
/
差異對比

針對這兩種撰寫風格,我們需要注意:
- 回傳型別關鍵字的區別,一個是returns,一個是return,
- PG風格里我們需要注意下函式的主體結構,前后是一對雙$符號,雙$符號之間的名稱可以自由命名,但需要注意前后要保持一致,特別是大小寫,
- PG風格里需要指定編程語言(可從系統表pg_language查詢),比較常見的是plpgsql或者sql
我們更推薦使用PG風格的函式創建形式,
創建函式示例
使用plpgsql創建一個簡單函式
create or replace function f1_formatdate (vdate date, fmt varchar)
returns varchar
as $function$
begin
return to_char(vdate,fmt);
end;
$function$ language plpgsql;
如果沒有復雜的業務邏輯判斷,也可以使用sql語言來撰寫函式
create or replace function f2_formatdate (vdate date, fmt varchar)
returns varchar
as $$
select to_char(vdate,fmt);
$$ language sql;
呼叫方式
方式一:直接select呼叫
select f1_formatdate(current_date,'yyyy-mm');

方式二:把函式當成表來select from呼叫,適用于函式回傳row或者table時只獲取部分列
select * from f2_formatdate(current_date,'yyyy/mm/dd');

方式三:函式回傳復合物件時通過符號“點”來呼叫
select (fun()).*
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/385374.html
標籤:其他
上一篇:硒測驗-復選框“元素不可互動”
