gpt4 book ai didi

java - 处理 PostgreSQL %ROWTYPE 返回

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

我有一个 PostgreSQL 函数,如下所示:

CREATE FUNCTION myFunc() returns myTable as $$
DECLARE
my_row myTable%ROWTYPE;
BEGIN
select * into strict my_row where......
return my_row
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE EXCEPTION 'Blame the user !'
USING HINT = 'Its always the users fault !';
END;
$$ LANGUAGE plpgsql;

问题是,当我在 Java 中调用它并尝试从 ResultSet 中获取一个项目时,例如rs.getString(1),我没有获取该列,而是获取了整个行表示形式,即 rs.getString(1) 生成的字符串如下所示:

"("col1data","col2data",etc. etc.)"

如何正确执行此操作?

最佳答案

你得到了打包的复合值。您必须通过 FROM 子句

解压此值
CREATE OR REPLACE FUNCTION public.fx()
RETURNS foo LANGUAGE plpgsql
AS $function$
BEGIN
RETURN (SELECT ROW(a,b) FROM foo LIMIT 1);
END;
$function$

postgres=# SELECT * FROM foo;
a | b
----+----
10 | 20
(1 row)

postgres=# SELECT fx(); -- packed composite
fx
---------
(10,20)
(1 row)

postgres=# SELECT * FROM fx(); -- unpacked composite
a | b
----+----
10 | 20
(1 row)

关于java - 处理 PostgreSQL %ROWTYPE 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28265951/

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