Man page - create_language(7)
Manual
CREATE LANGUAGE
NAMESYNOPSIS
DESCRIPTION 描 述
PARAMETERS 引 數
NOTES 注 意
EXAMPLES 例 子
COMPATIBILITY 相 容 性
SEE ALSO 參 見
譯 者
跋
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>
跋
本
頁 面 中 文 版 由
中 文 man 手 冊 頁 計
劃 提 供 。
中 文 man 手 冊 頁 計
劃 :
https://github.com/man-pages-zh/manpages-zh