【发布时间】:2017-02-26 21:47:35
【问题描述】:
我即将学习 postgresql,但遇到了某种问题。我想通过存储过程(函数)建立从网站到数据库的大部分连接。到目前为止,我有大约 20 个函数,其中 5 个函数返回与列完全相同的表,即:
create or replace function my_Function( t text )
returns setof table(uid uuid,testText text, randomInt int ...)
...
因为 table(uid uuid,testText text, randomInt int ...) 重复了 5 次,我发现我可以使用复合类型从我的函数返回相同类型的数据,所以如果我需要返回一个额外的列我可以更改我的复合类型,瞧,所有 5 个函数都应该返回相同的列。
不幸的是,这不是如何工作的,一旦我向复合类型添加了一个新列,所有使用我的复合类型的函数都因 saem 错误而中断:
Final statement returns too few columns
这是有道理的,因为我没有选择额外的列来适应复合类型。
有什么方法可以判断哪些函数使用复合类型作为返回类型? 有没有办法强制复合类型为新创建的列填充空白(如果没有,那么我也可以使用 table(...) 返回类型,因为它不能解决我试图避免的冗余问题)?
【问题讨论】:
标签: c# sql postgresql dapper psql