【发布时间】:2021-06-09 17:26:12
【问题描述】:
我觉得有必要获取任何具有“记录”返回数据类型的函数返回的表的列名和数据类型,因为...
现有的基于 SQL Server 的系统中的一个关键过程利用了一个将用户定义的函数作为参数的存储过程。初始步骤获取作为参数传递的函数返回的表的列名和类型。
在 Postgres 13 中,我可以使用 pg_proc.prorettype 和相应的 pg_type 来查找返回记录类型的函数……这是一个开始。我还可以使用 pg_get_function_result() 来获取包含我需要的信息的字符串。但是,它是一个字符串,虽然我最终将不得不组装一个非常相似的字符串,但这只是信息的一个应用。是否有包含 (column_name, data_type, ordinal_position) 的表格等效项,还是我需要自己做?
是否可以访问系统在创建此类函数时可能已创建的复合数据类型?
我认为对我有用但有点奇怪的一个选项是:
> create temp table t as select * from function() limit 0;
然后在 info_schema.columns 中查找该表,组装我需要的内容并删除临时表...将所有这些放入一个函数中。
【问题讨论】:
-
我认为可能总是对我有用的一个解决方案有点傻,但我可以
-
那么您应该发布该解决方案作为答案,以帮助未来的提问者遇到同样的问题。也许社区可以让它变得不那么愚蠢。
标签: postgresql