2025年9月25日: PostgreSQL 18 发布!
支持的版本:当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本:devel
不支持的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4

42.12. Tcl 过程名称 #

PostgreSQL 中,如果函数位于不同的模式(schema)中,或者函数的参数数量或类型不同,可以使用相同的函数名来定义不同的函数。然而,Tcl 要求所有过程名都必须是唯一的。PL/Tcl 通过在内部 Tcl 过程名中包含参数类型名称来解决这个问题,并在必要时将函数的对象 ID (OID) 追加到内部 Tcl 过程名后面,以使其与同一 Tcl 解释器中之前加载的所有函数名称区分开。因此,同名但参数类型不同的 PostgreSQL 函数也将是不同的 Tcl 过程。这通常不是 PL/Tcl 程序员需要关心的问题,但在调试时可能会显现出来。

出于此原因以及其他原因,PL/Tcl 函数不能直接(即在 Tcl 内部)调用另一个函数。如果需要这样做,您必须通过 SQL 调用,使用 spi_exec 或相关命令。

提交更正

如果您在文档中看到任何不正确、与您的实际经验不符或需要进一步澄清的内容,请使用此表单报告文档问题。