postgresql - 从 postgresql 函数返回 UDT 作为单个参数
问题描述
我正在尝试编写一个函数,该函数返回由用户定义类型的单列组成的记录,以便我可以使用该ResultSet.getObject(int colNumber, Class<T> class)
方法在 java 中摄取它们。如果我的函数返回多于一列,它会按预期工作,但如果我的函数只有一列,那么它将 UDT 扩展回其组成部分,这样我就无法使用所需的方法。例如
create type test as (x int, y int);
create or replace function test()
returns table(test test)
as $$
select (42, 7)::test;
$$ language sql;
create or replace function test2()
returns table(test test, junk boolean)
as $$
select (42, 7)::test, false;
$$ language sql;
运行test2()
以我可以通过所需方法摄取但不能摄取的格式为我提供数据test()
。如何指定 test 的返回值以获得所需的结果?
postgres=# select * from test2();
test | junk
--------+------
(42,7) | f
(1 row)
postgres=# select * from test();
x | y
----+---
42 | 7
(1 row)
我想要的是...
postgres=# select * from test();
test
--------
(42,7)
(1 row)
解决方案
我认为 * 是问题所在。我们为每一列使用星号。
select test()
用这个。
推荐阅读
- c - 计算C中链表中的冗余
- puppeteer - 使用 puppeteer login gmail get 无法登录
- javascript - PWA,Service Worker 错误:“Internet 连接似乎处于脱机状态”
- regex - 如何使用正则表达式捕获包含一个或多个任意单词的多个组
- docker - Dockerfile RUN 命令损坏。我如何正确逃避它?
- android - 在edittext中更改背景会导致框的宽度等于0
- python - 无法使用 sklearn 的 joblib 加载泡菜文件
- r - 绘制 R 中单列的总和
- javascript - 不使用 MongoDB 中的 req.body 从 DB 更新字段值
- python - 如何在 python 中为“optimize.minimize”定义边界?