2007-03-20

Oracle::PostgreSQL 從 PL/SQL 移植到 PL/pgSQL

更新:2007-03-21
對映章節:C37.11

內容:

本節解釋了 OraclePL/SQLPostgreSQLPL/pgSQL語言之間的差別, 希望能對那些從Oracle® 向 PostgreSQL 移植應用的人有所幫助。

PL/pgSQL與 PL/SQL 在許多方面都非常類似。 它是一種塊結構的,命令式的語言並且必須宣告所有變量。 賦值,循環,條件等都很類似。 在從 Oracle PostgreSQL 移植的時候必須記住一些事情:

  • PostgreSQL中參數沒有預設值。

  • 你可以在PostgreSQL裡重載函數。 這個特性常用於繞開缺乏預設參數的問題。

  • You cannot use parameter names that are the same as columns that are referenced in the function. Oracle allows you to do this if you qualify the parameter name using function_name.parameter_name. In PL/pgSQL, you can instead avoid a conflict by qualifying the column or table name.
  • PL/pgSQL裡不需要游標(CURSOR), 只要把命令放在 FOR 語句裡就可以了

  • PostgreSQL 裡,函數體必須寫成字串文本, 因此你需要使用美元符包圍或者逃逸函數體裡面的單引號。

  • 我們應該用模式把函數組織成不同的群組,而不是用 package。

  • 因為沒有 package,所以也沒有 package 級別的變量。這一點有時候挺討厭。 你可以在臨時表裡保存會話級別的狀態

更多參考資料:
EnterpriseDB 對 Oracle 遷移至 PostgreSQL 的支持(近乎80%的不需修改移植)

沒有留言:

網誌存檔

PostgreSQL & Google-Analytics Running...

::Planet PostgreSQL::

PostgreSQL Information Page

PostgreSQL日記(日本 石井達夫先生Blog)

PostgreSQL News

黑喵的家 - 資料庫相關

Google 網上論壇
PostgreSQL 8 DBA 專業指南中文版
書籍內容討論與更多下載區(造訪此群組)
目錄下載: PostgreSQL_8 _DBA_Index_zh_TW.pdf (更新:2007-05-18)

全球訪客分佈圖(Google)

全球訪客分佈圖(Google)