在 postgres 中使用 table.column%type-argument 获取有关函数的元数据

发布于 2024-07-23 01:57:48 字数 154 浏览 2 评论 0原文

是否可以找出 postgres 中函数中的参数是否定义为

table.column%type foo

sometype foo

查询例如 pg_proc?

Is it possible to find out if an argument in a function in postgres was defined as

table.column%type foo

or

sometype foo

querying e.g. pg_proc?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

东北女汉子 2024-07-30 01:57:48

pg_proc 中的 proargtypes 列是所有函数参数类型的数组。 然后,每种类型都可以交叉引用到 pg_type.oid

因此,如果我定义一个这样的函数:

steve@steve@[local] =# create function testfunc(pg_proc.proname%type) returns boolean language 'sql' immutable strict as $ select true $;
NOTICE:  type reference pg_proc.proname%TYPE converted to name
CREATE FUNCTION

嗯,这个通知不太有希望。

该函数的 pg_proc 条目是:

 proname  | proargtypes
----------+-------------
 testfunc | 19

并且类型 19 只是“名称”。 所以看来这里的答案恐怕是“不”。

The proargtypes column in pg_proc is an array of the types of all the function's arguments. Each type can then be cross-referenced to pg_type.oid.

So if I define a function like this:

steve@steve@[local] =# create function testfunc(pg_proc.proname%type) returns boolean language 'sql' immutable strict as $ select true $;
NOTICE:  type reference pg_proc.proname%TYPE converted to name
CREATE FUNCTION

Well, that notice isn't too hopeful.

The pg_proc entry for that function is:

 proname  | proargtypes
----------+-------------
 testfunc | 19

and type 19 is just "name". so it looks like the answer here is "no", I'm afraid.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文