Provided by: manpages-zh_1.5-1_all bug

NAME

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

SYNOPSIS

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

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

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

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

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

       PROCEDURAL
               這是茖S有用的字。

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

               出於向下相容的鴞],這茼W字可以用單引號包圍。

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

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

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

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

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

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

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

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

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

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

EXAMPLESl
        下惆漹禷陽鶡瑼漫R令將注冊一門新的過程語言及其關聯的調用句柄。

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

COMPATIBILITYe性
       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>