PostgreSQL 8.2.3 中文文档
后退快退章38. PL/Tcl - Tcl 过程语言快进前进

38.1. 概述

PL/Tcl 提供 C 语言里面函数开发者所拥有的大多数功能,只有一点点限制除外。

的限制是,所有东西都是在一个安全的 Tcl 解释器里面运行的。除了一个有限的 Tcl 安全命令集外,只有很少的几个命令可以通过 SPI 访问数据库以及通过 elog() 生成错误信息。不像 C 函数那样,Tcl 没有办法访问数据库后端内部或者获得 OS 级的 PostgreSQL 服务器进程的权限。因此,任何非特权的数据库用户都可以被允许使用这种语言。

另外的实现级限制是 Tcl 过程不能用于创建新数据库类型的输入/输出函数。

有时候需要写一些不受安全 Tcl 限制的 Tcl 函数,比如,可能需要一个可以发送邮件的 Tcl 函数。要处理这样的问题,有一个 PL/Tcl 的变种,叫 PL/TclU(不可信的 Tcl)。这个语言和 PL/Tcl 是完全一样的,只不过使用了一个完整的 Tcl 解释器。如果你使用了 PL/TclU ,那么你必须把它安装成一种不可信的过程语言,这样只有数据库超级用户可以用它创建函数。PL/TclU 函数的作者必须注意:你写的函数一定不要做任何预算外的事情,因为它能干所有数据库管理员能干的事情。

如果在安装过程的配置步骤中声明了 Tcl 支持,那么 PL/Tcl 和 PL/TclU 的调用处理器是在制作时自动制作并安装到 PostgreSQL 库目录中去的。要在某个特定的数据库中安装 PL/Tcl 和/或 PL/TclU ,那么你可以使用 createlang 程序。比如 createlang pltcl dbnamecreatelang pltclu dbname


后退首页前进
PL/Tcl - Tcl 过程语言上一级PL/Tcl 函数和参数