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;

原文地址:https://www.cnblogs.com/fanweisheng/p/11077541.html

时间: 2024-08-01 21:07:21

CREATE LANGUAGE - 定义一种新的过程语言的相关文章

定义一种新的图片格式.gnet

本人希望csdn可以定义一种新的图片格式,因为csdn一直是互联网中坚力量 本人发现,传统的图片格式已经不适应互联网时代了!!!,故本人发起定义一种新的图片格式,后缀名为 .gnet 互联网上的图片大多有这几种来源,微博上传,视频截图,网络编辑人上传等,以目前的技术,这些图片是不可以被搜索引擎搜索的 大大阻碍了互联网的进一步整合,所以本人定义一种新的图片格式,这种图片格式含有一个储存信息的数据结构 并且对图片压缩(包括有损压缩)的过程中,储存信息可以保留原样 如果这种图片格式一经定义,相信很快就

createlang - 定义一种新的 PostgreSQL 过程语言

SYNOPSIS createlang [ connection-option...] langname [ dbname] createlang [ connection-option...] --list | -l dbname DESCRIPTION 描述 createlang 是一个用于向 PostgreSQL 数据库增加新的编程语言的工具. createlang 可以处理所有 PostgreSQL 版本缺省就提供的语言,但是不能处理其它方面提供的语言. 尽管可以用 SQL 命令直接增加

本人发起定义一种全新的图片格式

本人发现,传统的图片格式已经不适应互联网时代了!!!,故本人发起定义一种新的图片格式,后缀名为 .gnet 互联网上的图片大多有这几种来源,微博上传,视频截图,网络编辑人上传等,以目前的技术,这些图片是不可以被搜索引擎搜索的 大大阻碍了互联网的进一步整合,所以本人定义一种新的图片格式,这种图片格式含有一个储存信息的数据结构 并且对图片压缩(包括有损压缩)的过程中,储存信息可以保留原样 如果这种图片格式一经定义,相信很快就会有微博客户端,视频截图软件,浏览器等支援这种图片格式了 大家快来加入吧!!

CREATE FUNCTION - 定义一个新函数

SYNOPSIS CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] ) RETURNS rettype { LANGUAGE langname | IMMUTABLE | STABLE | VOLATILE | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT | [EXTERNAL] SECURITY INVOKER | [EXTERNAL] SECURITY

javascript一种新的对象创建方式-Object.create()

原文地址:http://www.cnblogs.com/yupeng/p/3478069.html 1.Object.create() 是什么? Object.create(proto [, propertiesObject ]) 是E5中提出的一种新的对象创建方式,第一个参数是要继承的原型,如果不是一个子函数,可以传一个null,第二个参数是对象的属性描述符,这个参数是可选的. 例如: 1 function Car (desc) { 2 this.desc = desc; 3 this.col

CREATE SCHEMA - 定义一个新的模式

SYNOPSIS CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ] CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ] DESCRIPTION 描述 CREATE SCHEMA 将在当前数据库里输入一个新的模式. 该模式名将在当前数据库里现存的所有模式名中唯一. 模式实际上是一个名字空间: 它包含命名对象(表,数据

CREATE OPERATOR - 定义一个新的操作符

SYNOPSIS CREATE OPERATOR name ( PROCEDURE = funcname [, LEFTARG = lefttype ] [, RIGHTARG = righttype ] [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ] [, RESTRICT = res_proc ] [, JOIN = join_proc ] [, HASHES ] [, MERGES ] [, SORT1 = left_sort_op ] [,

CREATE RULE - 定义一个新的重写规则

SYNOPSIS CREATE [ OR REPLACE ] RULE name AS ON event TO table [ WHERE condition ] DO [ INSTEAD ] { NOTHING | command | ( command ; command ... ) } DESCRIPTION 描述 CREATE RULE 定义一个适用于特定表或者视图的新规则. CREATE OR REPLACE RULE 要么是创建一个新规则, 要么是用一个同表上的同名规则替换现有规则.

二十八、带给我们一种新的编码思路——EFW框架CS系统开发中的MVC模式探讨

回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://pan.baidu.com/s/1eQCc69G       前言:记得最初写出Winform版MVC的代码是在公司的一个产品中,产品有几个界面功能比较多,一个界面窗体的代码尽然有1万多行代码,让我们在维护这几个界面的时候非常的痛苦,你可能想可以把这个大的界面拆分成几个小的界面在集成在一起不就好了,但实际上这样