当前位置: 首页 > 知识库问答 >
问题:

从函数返回具有列定义的记录

令狐嘉运
2023-03-14

我知道Postgres允许返回预定义的复合数据类型、记录和具有列定义的表。

然而,我没有返回一个定义了列的简单记录,所以我总是使用表,即使我知道这只返回一行。

我的函数定义如下:

CREATE OR REPLACE FUNCTION name(p_param1 text, p_param2 json)
    RETURNS TABLE(
       col1    bigint,
       col2    integer,
       col3    integer
    )

如果我尝试以同样的方式返回记录,则返回失败:

CREATE OR REPLACE FUNCTION name(p_param1 text, p_param2 json)
    RETURNS RECORD(
       col1    bigint,
       col2    integer,
       col3    integer
    )

这在博士后中不可能吗?我知道我可以只声明一个自定义复合数据类型,但我不想为每个返回记录的函数声明一个类型。

共有1个答案

鲁乐
2023-03-14

您正在查找OUT参数:

CREATE OR REPLACE FUNCTION name(
        p_param1 text
  ,     p_param2 json
  , OUT col1 bigint
  , OUT col2 integer
  , OUT col3 integer)
  RETURNS record AS ...

不同之处:此表单只返回一行,而返回表返回0-n行
更多:

  • 从带OUT参数的函数返回
 类似资料:
  • 问题内容: 我目前正在阅读John Papa的AngularJS样式指南,并看到了以下代码: 您可以看到函数和是 在 函数返回值 之后 定义的。这是如何运作的?它是否符合标准并且可以在所有浏览器中使用(例如,来自IE 6)? 问题答案: 您可以看到函数和是在函数返回值之后定义的。 那是从它们的编写位置看的样子,是的,但是实际上它们是在函数中的任何分步代码完全运行之前定义的。有时这被称为“提升”函数

  • 我正在等待(从USSD请求中)检索一个值,以便返回它(getUSSD):

  • 如您所见,它将参数和的和保存在变量中,然后将包含它们的和的eax寄存器保存在变量中,就像函数返回值一样。 这样做是因为函数是用返回值定义的吗?

  • 问题内容: 我有一个计算税金的函数。 我不明白为什么它不能停止递归。 问题答案: 在您的职能部门中: 您没有从函数或设置中返回值。当您不返回任何内容时,返回值为。 也许,您想要这样:

  • 我真的需要温习一下我的异步等待和promise。我想要一些建议。 我正在对firebase firestore进行异步函数调用。函数应根据单个输入参数返回字符串。 该功能适用于1-1用户聊天。该功能是创建聊天/查找现有聊天,并返回其ID。 现在,我得到的作为返回值的和不知道为什么。除了返回之外,该函数还能正常工作。 我有两个功能。一个是React类组件生命周期方法,另一个是我的firebase异步