Postgresql 中文操作指南
42.1. Installing Procedural Languages #
过程语言必须“安装”到要使用它的每个数据库中。但是 template1 数据库中安装的过程语言在所有后续创建的数据库中都会自动可用,因为 template1 中各自的条目将被 CREATE DATABASE 复制。因此,数据库管理员可以决定哪些语言可在哪些数据库中使用,并且可以在需要时使某些语言默认可用。
对于标准发行版中提供的语言,只需要执行 CREATE EXTENSION language_name 将语言安装到当前数据库中。仅建议对未打包为扩展的语言使用下面描述的手动程序进行安装。
Manual Procedural Language Installation
数据库中的过程语言通过五步来安装,该过程必须由数据库超级用户执行。在大多数情况下,必需的 SQL 命令应打包为“扩展”的安装脚本,以便 CREATE EXTENSION 可以用来执行它们。
Example 42.1显示了手动安装过程如何与 PL/Perl 语言一起使用。
Example 42.1. Manual Installation of PL/Perl
以下命令告诉数据库服务器在何处找到 PL/Perl 语言的调用处理程序函数的共享对象:
CREATE FUNCTION plperl_call_handler() RETURNS language_handler AS
'$libdir/plperl' LANGUAGE C;
PL/Perl 具有一个内联处理程序功能和一个验证程序,因此我们也声明了这些内容:
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;
然后定义之前声明的函数应对将语言属性设为 plperl 的函数和过程进行调用。
在默认的 PostgreSQL 安装中,PL/pgSQL 语言的处理程序被构建并安装到“library”目录中;此外,PL/pgSQL 语言本身也被安装在所有数据库中。如果配置了 Tcl 支持,PL/Tcl 和 PL/TclU 的处理程序将被构建并安装在 library 目录中,但语言本身在任何数据库中默认情况下并不会安装。同样,如果配置了 Perl 支持,PL/Perl 和 PL/PerlU 的处理程序将被构建并安装,并且如果配置了 Python 支持,PL/PythonU 的处理程序也将被安装,但默认情况下不会安装这些语言。