9.3 9.4 9.5 9.6 10 11 12 13 14 15 16 17 Current(18)
PostgreSQL中文社区 问题报告 纠错本页面

42.12. Tcl 过程名 #

PostgreSQL 中,如果函数放置在不同的模式中, 或者参数的数量或类型不同,则可以使用相同的函数名称定义不同的函数。 然而,Tcl 要求所有过程名称必须是唯一的。 PL/Tcl 通过在内部 Tcl 过程名称中包含参数类型名称来处理此问题, 然后在必要时将函数的对象 ID (OID) 附加到内部 Tcl 过程名称, 以使其与同一 Tcl 解释器中所有先前加载的函数名称不同。 因此,具有相同名称和不同参数类型的 PostgreSQL 函数 也将是不同的 Tcl 过程。 这通常对 PL/Tcl 程序员来说不是问题, 但在调试时可能会显现出来。

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