Provided by: manpages-zh_1.5.2-1.1_all bug

NAME

       CREATE LANGUAGE - 定義一種新的過程語言

SYNOPSIS

       CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name
           HANDLER call_handler [ VALIDATOR valfunction ]

DESCRIPTION 描述

        使用  CREATE  LANGUAGE,  一個PostgreSQL  使用者可以在  PostgreSQL裏注冊一個新的語言。 因
       而,函數和觸發器過程可以用這種新語言定義。要注冊新語言使用者必須具有 PostgreSQL 超級使用者
       權限。

       CREATE  LANGUAGE  將該語言的名字和一個調用句柄關聯起來,而該調用句柄負責執行該語言書寫的函
       數。 請參考 ``User-Defined Functions'' 獲取有關語言調用句柄的更多信息。

        請注意過程語言是對每個獨立的數據庫而言是自己的。     要讓一種語言預設時可以為所有數據庫獲
       得,那你應該把它安裝到 template1 數據庫裏。

PARAMETERS 參數

       TRUSTED
              TRUSTED 說明對該語言的調用句柄是安全的; 也就是說,它不會提供給非特權使用者任何繞過
              訪問限制的能力。 如果忽略這個關鍵字,只有具有 PostgreSQL   超級使用者權限的人可以使
              用這個語言創建新的函數。

       PROCEDURAL
               這是個沒有用的字。

       name
               新的過程化語言的名稱。語言名是大小寫無關的。    這個名字應該在數據庫的所有語言中唯
              一。

               出於向下相容的原因,這個名字可以用單引號包圍。

       HANDLER call_handler
              call_handler   是一個以前注冊過的函數的名字,該函數將被調用來執行這門過程語言寫的函
              數。  過程語言的調用句柄必須用一種編譯語言書寫,比如 C,調用風格必須是版本 1 的調用
              風格, 並且在 PostgreSQL 裏注冊為不接受參數並且返回  language_handler  類型的函數,
              language_handler 是用於將函數聲明為調用句柄的佔位符。

       VALIDATOR valfunction
              valfunction 是一個已經注冊的函數的名字, 在用該語言創建新函數的時候將調用它來校驗新
              函數。如果沒有聲明校驗函數,那麼建立新函數的時候就不會檢查它。 校驗函數必須接受一個
              類型為 oid 的參數,它是將要創建的函數的 OID,並且通常會返回 void。

               校驗函數通常會檢查函數體,看看看有沒有語法錯誤,但是它也可以查看函數的其它屬性,
              比如該語言是否不能處理某種參數類型。要發出一個錯誤,校驗函數應該用 elog() 函數。 該
              函數的返回值將被忽略。

NOTES 注意

        這條命令通常不應該由使用者直接執行。  對於 PostgreSQL 版本裏提供的過程語言, 我們應該使用
       createlang(1) 程式,  它將為我們安裝正確的調用句柄。  (createlang  也會在內部調用  CREATE
       LANGUAGE。)

        在   PostgreSQL   版本   7.3   之前,   我們必須聲明句柄函數返回佔位類型   opaque,而不是
       language_handler。 為了支持裝載舊的轉儲檔案,CREATE LANGUAGE 還將接受聲明為返回 opaque  的
       函數, 但是它會發出一條通知並且把函數聲明返回類型改為 language_handler。

        使用 CREATE FUNCTION [create_function(7)] 命令創建新函數。

        使用 DROP LANGUAGE [drop_language(7)],或者更好是 droplang(1) 程式刪除一個過程語言。

        系統表  pg_language  (參閱  ``System  Catalogs'')  記錄了更多有關當前安裝的過程語言的信
       息。createlang 也有一個選項列出已安裝的語言。

        目前,除了權限之外,一種過程語言創建之後它的定義就不能再更改。

        要使用一種過程語言,使用者必須被賦予 USAGE 權限。 如果該語言已知是可信的,那麼 createlang
       程式自動給每個人賦予權限。

EXAMPLES 例子

        下面兩條順序執行的命令將注冊一門新的過程語言及其關聯的調用句柄。

       CREATE FUNCTION plsample_call_handler() RETURNS language_handler
           AS '$libdir/plsample'
           LANGUAGE C;
       CREATE LANGUAGE plsample
           HANDLER plsample_call_handler;

COMPATIBILITY 相容性

       CREATE LANGUAGE 是 PostgreSQL 擴展。

SEE ALSO 參見

       ALTER  LANGUAGE  [alter_language(7)],  CREATE FUNCTION [create_function(l)], DROP LANGUAGE
       [drop_language(l)], GRANT [grant(l)], REVOKE [revoke(l)], createlang(1), droplang(1)

譯者

       Postgresql 中文網站 何偉平 <laser@pgsqldb.org>