【发布时间】:2017-04-19 09:12:36
【问题描述】:
我正在尝试使用以下查询检索存储过程的列定义:
exec sp_describe_first_result_set @tsql = N'EXEC @return_value = [dbo].[foo]
@DATABASENAME = dbname,
@TABLENAME = tblname,
@DATEFROM = N''20170101'',
@DATETO = N''20170201'''
我得到以下回复:
消息 11526,级别 16,状态 1,过程 sp_describe_first_result_set,第 1 行
无法确定元数据,因为过程 'foo' 中的语句 'INSERT INTO #Tables(CubeSchema,TableName,DateFilterColumn,SelectColumns) SELECT 'Col1','Col2' 使用临时表
这个问题有解决办法吗?
编辑:我无权查看和/或更改存储过程,所以很遗憾,这种解决方案不起作用。
【问题讨论】:
-
当你刚刚运行你的存储过程时,有没有返回一个结果集?所有列的名称是否正确?你的程序在做什么?如果它只是读取数据,您可能会考虑将其更改为内联表值函数。我尽量避免使用 SP,除非我想做某事......
-
sp 返回一个始终相同(非条件)且所有列都正确命名的结果集。存储过程是由客户创建的,用于向我提供一些数据,因为我不允许直接查询他们的表。他们没有提供有关列数据类型的文档,我想看看它们。就是这样。
-
In this article there is discussed the same issue (with working sample!)。如果您无法更改 SP 代码 - 根据此 - 就没有什么亮点...
-
很遗憾,我无法更改 SP 代码,也无法看到代码。它只是按原样提供,仅用于执行。
标签: sql-server stored-procedures