CREATE LANGUAGE

    • TRUSTED

      TRUSTED说明该语言并不授权没有权限的用户访问数据。如果在注册该语言时忽略这个关键字,则只有超级用户权限可以使用。

    • 新过程语言的名称。这个名字应该在数据库的所有语言中唯一。

      出于向下兼容的原因,这个名字可以用单引号包围。

    • HANDLER call_handler

      call_handler是一个以前注册过的函数名字,该函数将被用来执行该过程语言的函数。过程语言的调用处理器必须用一种编译语言(比如C)书写,调用风格必须是版本1的调用风格,并且注册为不接受参数并且返回language_handler类型的函数。language_handler是用于将函数声明为调用处理器的占位符。

    • VALIDATOR valfunction

      valfunction是一个以前注册过的函数名字,在用该语言创建新函数的时候将用它来校验新函数。如果没有声明校验函数,那么建立新函数的时候就不会检查它。校验函数必须接受一个类型为oid的参数,它是将要创建的函数的OID,并且通常会返回void。

      校验函数通常会检查函数体,看看有没有语法错误,但是它也可以查看函数的其它属性,比如该语言是否不能处理某种参数类型。校验函数应该用ereport()函数报告错误。该函数的返回值将被忽略。

    对于pg_pltemplate还不知道的语言,需要下面这样的序列: