如何获取在PostgreSQL函数中使用的所有变量的名称和数据类型?在pg_proc中遍历prosrc列是一种方法。有没有更好的视图,它以一种易于查询/过滤的格式存储信息?PostgreSQL版本为9.0。
发布于 2015-05-15 16:04:05
不,在PostgreSQL中没有内置的方法来做到这一点。函数体被存储为文本字符串,而无需将其解析为其组件。显然,您可以解析出变量名称和数据类型,但这需要一些严格的解析。
对于PL/pgSQL:
declare,则继续读取,直到单词begin., (将一个变量与另一个变量分隔)或单词begin (变量结束),但忽略括号()中的逗号,因为它们与变量的初始化或数据类型修饰符(如numeric(8, 2))相关联。这是一种数据类型,带有它的所有修饰符和在上一步中读取的任何initialization.:=之前的所有内容。前面的都是数据类型和任何修饰符,后面的都是从步骤2到遇到单词begin.的初始value.
在单个过程中可能有嵌套的块,因此您必须对主体中的每个块重复此过程。
对于其他语言,如PL/Perl、PL/Tcl和PL/Python,您必须根据该语法来解析变量。此外,还有一些带有过程化语言的附加模块,如PL/R或PL/Sh,它们的语法也不同。
这显然不是通过查询中的简单reg_exp完成的,而是需要一些更高级的逻辑处理。
https://stackoverflow.com/questions/30252011
复制相似问题