pltcl
PL/TCL 存储过程语言
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pltcl | 1.0 | LANG | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3240 | pltcl | 否 | 是 | 否 | 是 | 是 | 否 | pg_catalog |
| 3250 | pltclu | 否 | 否 | 否 | 是 | 否 | 否 | pg_catalog |
| 相关扩展 | plpgsql plperl plpython3u pg_tle plv8 pllua pljava |
|---|
版本
| PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|
| 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
安装
提示:这是 PostgreSQL 内核自带的 contrib 扩展
CREATE EXTENSION pltcl;
用法
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
$$;