gpt4 book ai didi

postgresql - 存储过程返回类型?

转载 作者:行者123 更新时间:2023-11-29 13:30:54 24 4
gpt4 key购买 nike

存储过程是否可以返回两种不同的类型?

CREATE OR REPLACE FUNCTION test_return_type(p_decide integer)
RETURNS t_my_type AS
$BODY$DECLARE
v_my_type t_my_type;
BEGIN
IF p_decide = 1 THEN
RETURN p_decide;
ELSE
--some code which will fill columns in v_my_type;
RETURN v_my_type;
END IF;
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

't_my_type' 的定义:

CREATE TYPE t_my_type AS
(id integer,
owner integer,
type integer,
time bigint,
text character varying);

使用程序的代码:

   SELECT * FROM test_return_type(1);

SELECT * FROM test_return_type(2);

如果这不可能,我是否应该用一些虚假数据填充 v_my_type(当传递 1 时),以便我可以返回在过程返回类型中声明的 t_my_type?还有比这更好的方法吗?

我正在使用 PostgreSQL v9.3 和 pgAdmin III v1.18.0。

最佳答案

您可以使用OUT 参数定义您的函数。在上面的示例中,p_decide 值将标记 v_my_type 参数是否具有有意义的值。

CREATE OR REPLACE FUNCTION test_return_type(OUT p_decide integer, OUT v_my_type t_my_type) RETURNS record AS $$
...

参见 documentation关于从函数返回数据的其他选项。

关于postgresql - 存储过程返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23782776/

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