gpt4 book ai didi

postgresql - 从postgresql中的内置函数和用户定义函数中进行选择的区别

转载 作者:行者123 更新时间:2023-11-29 12:24:23 25 4
gpt4 key购买 nike

我试图理解 postgresql 在从内置的标量值函数中进行选择时的行为,例如current_date 和那些由用户定义的,特别是在涉及别名时。举以下例子:

SELECT * FROM CURRENT_DATE AS x;
SELECT x FROM CURRENT_DATE AS x;
SELECT x.x FROM CURRENT_DATE AS x;

以上所有输出相同的东西,当前日期在名为“x”的列中。

现在定义如下函数:

CREATE OR REPLACE FUNCTION
f (r OUT INTEGER)
AS $$
BEGIN
r := 1;
END
$$ LANGUAGE plpgsql;

再举如下例子:

SELECT * FROM f() AS x;
SELECT x FROM f() AS x;
SELECT r FROM f() AS x;
SELECT x.r FROM f() AS x;
SELECT x.x FROM f() AS x;

第一个在名为“r”的列中输出值 1。第二个在名为“x”的列中输出值。第三个和第四个在名为“r”的列中输出值,与第一个相同。第五个导致错误。

为什么 current_date 和 f 函数的行为不同?

最佳答案

区别在于您为输出参数指定了名称 (r)。如果您不这样做,您的函数在这方面将表现得像 current_date

关于postgresql - 从postgresql中的内置函数和用户定义函数中进行选择的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48725712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com