我正在 SQL Server Data Tools (SSDT) 中编写一个表值函数。 表值函数要求您显式声明返回表的数据类型。在我的特殊情况下,我编写了一个返回我想要的值的查询。我可以使用 SSDT 执行它,但不知道如何快速确定返回的列的数据类型。
有没有办法获取它返回的列列表和所述列的数据类型,以便我可以快速准确地填充中的列列表ReturnTable
?
我得到的最接近的是将鼠标悬停在SELECT
子句中的字段名称上,但这不提供长度或精度限制。
编辑:我对表值函数的评论要求您根据@srutkzy 的回答明确说明返回表中列的数据类型。谢谢!
您可以使用该
SELECT..INTO
语法即时创建表并检查sys.columns
.我认为
sys.columns
也有函数的定义,但我现在没有要检查的实例。或者,您可以使用即将放入函数中的相同查询创建一个视图并检查目录。这种说法不一定正确。是的,多语句 TVF 确实需要您声明返回表。但是,内联 TVF 不需要任何表定义,因为它们只是封装了单个查询(本质上是一个接受输入参数的视图)。有关更多详细信息,请参阅CREATE FUNCTION的 MSDN 页面。
鉴于内联 TVF比多语句 TVF 效率更高,第一个问题是:这个查询可以在内联 TVF 中完成吗?如果是,则将其设为内联 TVF,则无需定义表结构。
如果操作不能作为内联 TVF 完成,那么您应该从基表中获取数据类型。您可以使用:
或者: