返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

38.1. 概述

发布于 2019-09-30 03:09:29 字数 856 浏览 973 评论 0 收藏 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文