如何获取PostgreSQL函数中使用的所有变量的名称和数据类型?在pg_proc中浏览prosrc列是一种方法。有没有更好的一个 - 一些视图以一种易于查询/过滤的格式存储信息? PostgreSQL版本是9.0。
答案 0 :(得分:2)
不,PostgreSQL中没有内置的方法可以做到这一点。函数体存储为文本字符串,而不将其解析为其组件。您可以 - 显然 - 解析变量名称和数据类型,但需要进行一些严格的解析。
对于PL / pgSQL:
declare
,请继续阅读,直到单词begin
。,
(将一个变量与另一个变量分开)或单词begin
(变量结尾),但忽略括号()
内的逗号,因为这些符号与初始化变量或数据类型修饰符(例如numeric(8, 2)
)。这是数据类型,包含所有修改器和任何初始化。:=
。之前的所有内容都是数据类型和任何修饰符,之后的所有内容都是初始值。begin
。单个程序中可能存在嵌套块,因此您必须对正文中的每个块重复此过程。
对于其他语言,如PL / Perl,PL / Tcl和PL / Python,您必须根据该语法解析变量。然后还有其他模块与程序语言,如PL / R或PL / Sh,再次有不同的语法。
这显然不是在查询中使用简单的reg_exp
完成的,但需要更高级的逻辑处理。