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 |