有没有办法在表值函数中命名列,具体取决于用户对函数的输入?
假设有一些功能:
foo(1,2,3)
所以需要三个整数输入。现在假设我想在表格中返回列名称:'1 some text','2 some text','3 some text'。
这可能吗?
答案 0 :(得分:1)
如果您需要SP方法,可以使用
进行扩展x
答案 1 :(得分:1)
没有。表值函数 - 多语句TVF,内联TVF或SQLCLR TVF - 需要返回一致/确定性结果集。这类似于需要始终返回相同数据类型的标量UDF(T-SQL和SQLCLR)。
实际上,任何TVF返回的结果集,无论TVF的类型如何,都是在创建TVF时在系统元数据中定义的,并且在运行时无法更改。您可以使用以下查询查看定义:
SELECT so.type_desc AS [ObjectType], so.[name] AS [ObjectName], sc.*
FROM sys.columns sc
INNER JOIN sys.objects so
ON so.[object_id] = sc.[object_id]
WHERE so.type_desc NOT IN ('SYSTEM_TABLE', 'USER_TABLE', 'INTERNAL_TABLE',
'VIEW', 'TYPE_TABLE')
ORDER BY so.[type_desc], so.[name], sc.column_id;
对于ObjectType
,您可以获取具有以下值的条目:
答案 2 :(得分:0)
这可以通过使用动态SQL来实现,但请记住,你不能在函数中使用它。尝试创建一个SP ..