|
22.2. 安装过程语言如果你要使用某种过程语言,那么你必须把它 "安装" 到要用它的数据库里.不过那些安装到 template1 数据库里的过程语言 会自动在随后创建的数据库中安装.因此数据库管理员可以决定哪个 数据库可以使用哪门语言,以及可以决定缺省时可以使用哪些语言. 对于那些随着标准版本发布的语言,你可以使用 createlang shell 脚本而不用自己事无巨细地 自己做.比如,要安装 PL/pgSQL 到 template1 数据库中,使用 createlang plpgsql template1 下面描述的收工安装的方法只是适用于那些 createlang 还不知道的客户语言. 手工的过程语言安装 一个过程语言是按三个步骤安装到数据库里面去的, 这些任务必须由数据库超级用户执行.
在缺省的 PostgreSQL 安装里,用于 PL/pgSQL 语言的句柄是制作和安装到 "library" 目录里面 去的.如果你配置了 Tcl/Tk 支持,那么用于 PL/Tcl 和 PL/TclU 的句柄 也会编译并安装到同一个位置.类似地,如果你配置了 Perl 支持, 那么也会制作和安装 PL/Perl 和 PL/TclU 的句柄. createlang 脚本可以为我们自动做上面描述的两个 step 2 和 step 3 步骤. Example 22-1. 收工安装 PL/pgSQL 下面的命令告诉数据库到那里才能找到用于 PL/pgSQL 语言的调用句柄函数的共享对象(目标). CREATE FUNCTION plpgsql_call_handler () RETURNS OPAQUE AS '$libdir/plpgsql' LANGUAGE C;
下面的命令 CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler LANCOMPILER 'PL/pgSQL'; 声明了前面所定义的调用句柄函数应该是在调用语言属性是 plpgsql 的函数,或触发器过程被调用的时候使用. |