2012年12月4日 星期二

[PostgreSQL] create function example (SQL)

Example:
create function "stock_dividend" (stock_code text) returns 
    table
    (
        activity_date date,
        cash_dividend float8,
        stock_dividend_from_retained_earnings float8,
        stock_dividend_from_capital_reserve float8,
        stock_dividend float8,
        total_dividend float8,
        profit_sharing_percentage float8
    )
as 
$$
select
    activity_date,
    cash_dividend,
    stock_dividend_from_retained_earnings,
    stock_dividend_from_capital_reserve,
    stock_dividend,
    total_dividend,
    profit_sharing_percentage
from StockDividend
where stock_code = $1
order by activity_date desc
$$
language SQL;

ALTER FUNCTION stock_dividend(text) OWNER TO stocktotal;

原本 JasperReports 夾長長的 query,現在只要 select * from stock_dividend() 就可以了。


最近重翻 Joel Spolsky 舊文:The Law of Leaky Abstractions,All non-trivial abstractions, to some degree, are leaky. 抽象化無法隱藏所有細節。但上面的搬動,有助於管理資料庫,我把所有 database 的東西集中到 database 裡頭,中央化管理,可以顧此顧彼。


又重新把抽象洩漏法則套用到新聞。幹!就是在講這回事。好唄,新聞並不能簡化我們的生活,新聞的確簡化我們對社會的了解,但要真實了解社會,還得看進去才是。


系統一 VS 系統二。

沒有留言:

張貼留言