程序语言
Posted 丹心明月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序语言相关的知识,希望对你有一定的参考价值。
PostgreSQL支持使用除SQL和C之外的语言编写用户自定义函数。其他语言一般称作程序语言(PLs)。对于以程序语言编写的函数,数据库服务器并未内置解析器。故需特殊的处理器进行处理。该处理器为编译为共享对象的C语言函数,并按需加载。
当前,PostgreSQL支持4种程序语言:PL/pgSQL(第42章),PL/Tcl(第43章),PL/Perl(第44章)和PL/Python(第45章)。其他可用语言参见附录H。自定义新语言请参见第55章。
41.1 安装程序语言
如果使用程序语言,需要将其安装到数据库中。不过安装在template1中的程序语言会在据此为模板创建的数据库中可用。对于发行版中支持的语言,只需执行CREATE EXTENSION language_name即可将该语言安装到数据库中。以下介绍未作为扩展包含的语言所需的安装步骤:
-
相应语言处理器的共享对象需要编译并安装到合适的库路径下;
-
声明处理器:CREATE FUNCTION handler_function_name() RETURNS language_handler AS 'path-to-shared-object' LANGUAGE C;
-
(可选)语言处理器可提供内联处理函数;
-
(可选)语言处理器可提供验证函数;
-
最后,以如下命令声明程序语言:CREATE [TRUSTED] LANGUAGE language_name HANDLER handler_function_name [INLINE inline_function_name] [VALIDATOR validator_function_name] ;
示例41.1 手动安装PL/Perl
声明处理函数调用共享对象:
CREATE FUNCTION plperl_call_handler() RETURNS language_handler AS
'$libdir/plperl' LANGUAGE C;
声明内联和验证函数:
CREATE FUNCTION plperl_inline_handler(internal) RETURNS void AS
'$libdir/plperl' LANGUAGE C STRICT;
CREATE FUNCTION plperl_validator(oid) RETURNS void AS
'$libdir/plperl' LANGUAGE C STRICT;
声明程序语言:
CREATE TRUSTED LANGUAGE plperl
HANDLER plperl_call_handler
INLINE plperl_inline_handler
VALIDATOR plperl_validator;
默认PostgreSQL安装中, PL/pgSQL的处理器构建且安装到了库目录;且会将PL/评估SQL语言安装到所有数据库中。如果也配置了支持Tcl,则PL/Tcl和PL/TclU处理器会构建且安装到库目录,但默认不安装语言。类似的,如果配置了支持Perl,PL/Perl和PL/PerlU处理器会构建且安装;如果配置支持Python,则会安装PL/PythonU处理器,但这些语言默认均不会安装。
以上是关于程序语言的主要内容,如果未能解决你的问题,请参考以下文章