【发布时间】:2013-02-08 22:31:36
【问题描述】:
我不打算深入细节,但我需要一种方法来通过存储过程确定返回列的类型。
有没有办法实现这一点,我不寻找适用于指定过程的解决方案 - 我应该能够在接收其他过程名称作为参数的其他过程中检测到这一点。
我使用的是 SQL Server 2012。
【问题讨论】:
标签: tsql stored-procedures sql-server-2012 detect column-types
我不打算深入细节,但我需要一种方法来通过存储过程确定返回列的类型。
有没有办法实现这一点,我不寻找适用于指定过程的解决方案 - 我应该能够在接收其他过程名称作为参数的其他过程中检测到这一点。
我使用的是 SQL Server 2012。
【问题讨论】:
标签: tsql stored-procedures sql-server-2012 detect column-types
在 SQL Server 2012 中,您可以使用 sp_describe_first_result_set
顾名思义,这将返回关于first结果集的元数据,仅由存储过程返回。下面的例子。
CREATE PROC Foo
AS
SELECT *
FROM sys.objects
GO
EXEC sp_describe_first_result_set @tsql = N'Foo'
【讨论】:
C# 等语言通过实际执行存储过程并查看返回的结果集来实现。
SELECT ... INTO 一个表然后看看它的结构。或者在 TSQL 之外你可以SET FMTONLY ON 然后执行它并查看结果集的结构。