pltcl

PL/TCL 存储过程语言

概览

扩展包名版本分类许可证语言
pltcl1.0LANGPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
3240pltclpg_catalog
3250pltclupg_catalog
相关扩展plpgsql plperl plpython3u pg_tle plv8 pllua pljava

版本

PG18PG17PG16PG15PG14
1.01.01.01.01.0

安装

提示:这是 PostgreSQL 内核自带的 contrib 扩展

CREATE EXTENSION pltcl;

用法

pltcl: PL/Tcl 受信过程语言

PL/Tcl 允许使用 Tcl 编程语言编写 PostgreSQL 函数。作为受信语言,它限制了对文件系统和其他系统资源的访问。

CREATE EXTENSION pltcl;

-- 返回问候语的简单函数
CREATE FUNCTION tcl_hello(name text) RETURNS text
LANGUAGE pltcl AS $$
  return "Hello, $1!"
$$;

SELECT tcl_hello('world');

-- 包含条件逻辑的函数
CREATE FUNCTION tcl_max(a integer, b integer) RETURNS integer
LANGUAGE pltcl AS $$
  if {$1 > $2} {return $1}
  return $2
$$;

-- 集合返回函数
CREATE FUNCTION tcl_sequence(count integer) RETURNS SETOF integer
LANGUAGE pltcl AS $$
  for {set i 1} {$i <= $1} {incr i} {
    return_next $i
  }
$$;

-- 触发器函数
CREATE FUNCTION tcl_audit() RETURNS trigger
LANGUAGE pltcl AS $$
  set NEW(modified_at) [clock format [clock seconds] -format "%Y-%m-%d %H:%M:%S"]
  return [array get NEW]
$$;

在 PL/Tcl 中通过 spi_exec 命令访问数据库:

CREATE FUNCTION tcl_count_rows(tbl text) RETURNS integer
LANGUAGE pltcl AS $$
  spi_exec "SELECT count(*) AS cnt FROM $1"
  return $cnt
$$;

最后修改 2026-03-14: update extension metadata (953cbd0)