Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17 / 18

42.12. Tcl 过程名 #

PostgreSQL中,如果函数位于不同模式中,或者参数个数或参数类型不同,就可以复用同一个函数名。不过,Tcl 要求所有过程名都必须不同。PL/Tcl 处理这一问题的方式是:在内部 Tcl 过程名中包含参数类型名,并在必要时把函数对象 ID(OID)追加到内部 Tcl 过程名后面,以确保它与同一 Tcl 解释器中所有先前已装载的函数名都不同。因此,名称相同但参数类型不同的PostgreSQL函数,也会对应不同的 Tcl 过程。这通常不是 PL/Tcl 程序员需要关心的事情,但在调试时可能会看见。

因此,再加上其他一些原因,一个 PL/Tcl 函数不能在 Tcl 内部直接调用另一个 PL/Tcl 函数。如果确实需要这样做,就必须通过 SQL 并使用spi_exec或相关命令来实现。