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 |