我必须创建一个包含一些用户定义类型的表并插入数据。
我试过这种方式。
- 创建类型 type1 为 (i int);
- 创建函数 mycast(int) 将 type1 返回为“select $1;”语言“sql”;
- 使用函数 mycast(int) 隐式创建类型转换(int as type1);
- 创建表 table_type(t type1);
- 插入 table_type 值(1::type1);
现在值被插入但用括号括起来,像这样
select * from table_type;
t
--------
(1)
(1 rows)
我认为我的功能可能有错误。有人可以帮忙吗。我基本上想要一个函数,它返回与我的输入相同的输出(没有任何 () )。
谢谢。
最佳答案
您定义的类型是一个复合类型,包含一个 int 类型的属性。复合类型的文本表示是属性列表周围的括号。但是从你的 cast 函数(它被破坏了,因为它返回一个标量而不是复合类型)来看,这根本不是你想要的。你能做的最好的事情就是像这样定义一个域:
create domain type1 as int;
那么你甚至不需要强制转换。
关于postgresql - 如何在 postgresql 中转换为用户定义的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7325204/