在 PostgreSQL 中,如果函数被放在不同的 模式中,或者参数的数量或类型不同,同一个函数名可以用于不同的函数 定义。 而 Tcl 要求所有过程名互不相同。 PL/Tcl 通过把参数类型名包含在内部 Tcl 过程名中,并且在必要时把 函数的对象 ID(OID)附加到内部 Tcl 过程名之后,使其不同于同一 Tcl 解释器中之前加载的所有函数的名称,来应对这一点。 因此,具有相同名字和不同参数类型的 PostgreSQL 函数也将是不同的 Tcl 过程。 这通常不是 PL/Tcl 程序员需要关心的问题,但在调试时它可能是可见 的。
除其他原因之外,正因如此,一个 PL/Tcl 函数无法直接调用另一个
(即在 Tcl 内部)。
如果需要这样做,必须经由 SQL,使用
spi_exec 或相关命令。