今天在查詢 SQL SERVER 對遞迴的支援時,查到這個網頁
一試果然提升效率 600%
那 FireBird 能否支援呢?
請參考 FireBird Select -- Recursive CTEs 一節
2014/06/27
2014/06/26
2014/06/16
Session function in FireBird
我在 Session funtion programming in PostgreSQL's PL/pgSQL 這篇文章中有提到:
PostgreSQL 對 Session function 的支援程度。
這次換上 FireBird 又會擦出什麼火花呢?
在 FireBird 裡,所使用的是 DSQL (Dynamic SQL) ,在 FireBird 2.0 新增,2.1 和 2.5 都有部分調整。
實際操作的感覺是:
即時性的 PSQL 在 DSQL 下實現 (“on-the-fly” PSQL within a DSQL context.)
語法是:EXECUTE BLOCK
execute block
returns (mm Integer)
as
begin
mm = 100;
suspend; --要加這句話做回傳輸出
end
如此,我們會得到
RETURNS (SimpleSum Integer)
AS
BEGIN
SimpleSum = arge1 + arge2;
suspend;
END
執行畫面:
執行結果:
RETURNS (arge varchar(100))
AS
BEGIN
FOR SELECT cast(KDT as varchar(100)) FROM M_TSE WHERE KDT >= '2014/06/16' into :arge
DO
suspend;
END
會得到
總結:
雖然沒有像 SQL Server 那樣的方便,但也算得上比 PostgreSQL 好設計,在 Run-Time 時期的作業有更多選擇了! :D
See also:
DSQL, ESQL, PSQL, ISQL 名詞解釋
FireBird Document: EXECUTE BLOCK
PostgreSQL 對 Session function 的支援程度。
這次換上 FireBird 又會擦出什麼火花呢?
在 FireBird 裡,所使用的是 DSQL (Dynamic SQL) ,在 FireBird 2.0 新增,2.1 和 2.5 都有部分調整。
實際操作的感覺是:
即時性的 PSQL 在 DSQL 下實現 (“on-the-fly” PSQL within a DSQL context.)
語法是:EXECUTE BLOCK
- EXECUTE BLOCK 做單一值的回傳
execute block
returns (mm Integer)
as
begin
mm = 100;
suspend; --要加這句話做回傳輸出
end
如此,我們會得到
- 帶有參數的處理語法如下:
RETURNS (SimpleSum Integer)
AS
BEGIN
SimpleSum = arge1 + arge2;
suspend;
END
執行畫面:
執行結果:
- 要取得資料集合的方式如下:
RETURNS (arge varchar(100))
AS
BEGIN
FOR SELECT cast(KDT as varchar(100)) FROM M_TSE WHERE KDT >= '2014/06/16' into :arge
DO
suspend;
END
會得到
總結:
雖然沒有像 SQL Server 那樣的方便,但也算得上比 PostgreSQL 好設計,在 Run-Time 時期的作業有更多選擇了! :D
See also:
DSQL, ESQL, PSQL, ISQL 名詞解釋
FireBird Document: EXECUTE BLOCK
訂閱:
文章 (Atom)