CREATE LANGUAGE(7) | SQL Commands | CREATE LANGUAGE(7) |
CREATE LANGUAGE - 定義一種新的過程語言
CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name
HANDLER call_handler [ VALIDATOR valfunction ]
使用 CREATE LANGUAGE, 一個PostgreSQL 用戶可以在 PostgreSQL裏註冊一個新的語言。 因而,函數和觸發器過程可以用這種新語言定義。要註冊新語言用戶必須具有 PostgreSQL 超級用戶權限。
CREATE LANGUAGE 將該語言的名字和一個調用句柄關聯起來,而該調用句柄負責執行該語言書寫的函數。 請參考 ``User-Defined Functions'' 獲取有關語言調用句柄的更多信息。
請注意過程語言是對每個獨立的數據庫而言是自己的。
要讓一種語言缺省時可以爲所有數據庫獲得,那你應該把它安裝到
template1 數據庫裏。
出於向下兼容的原因,這個名字可以用單引號包圍。
校驗函數通常會檢查函數體,看看看有沒有語法錯誤,但是它也可以查看函數的其它屬性,
比如該語言是否不能處理某種參數類型。要發出一個錯誤,校驗函數應該用
elog() 函數。
該函數的返回值將被忽略。
這條命令通常不應該由用戶直接執行。 對於 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
程序自動給每個人賦予權限。
下面兩條順序執行的命令將註冊一門新的過程語言及其關聯的調用句柄。
CREATE FUNCTION plsample_call_handler() RETURNS language_handler
AS '$libdir/plsample'
LANGUAGE C; CREATE LANGUAGE plsample
HANDLER plsample_call_handler;
CREATE LANGUAGE 是 PostgreSQL 擴展。
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>
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
2003-11-02 | SQL - Language Statements |