【问题标题】:Save Column Types of Stored Procedure保存存储过程的列类型
【发布时间】:2014-12-24 07:41:45
【问题描述】:

我有一个计划用于 SSRS 的存储过程,其中包含 50 多个不同的列。我有另一个执行它的过程,我打算插入结果表,但我需要事先知道列名。当我尝试执行时,我收到一条错误消息:

列名或提供的值数量与表定义不匹配。

我怀疑这是因为我的一列数据类型不正确。如何确定这些列用于创建我的表的确切数据类型?

我的插入语句:

insert into @resultset 
   exec my_proc

【问题讨论】:

  • 我认为您缺少一列或有一个额外的列 - 对于数据类型问题,您会收到不同的错误消息。您使用的是什么版本的 SQL Server?你为什么要标记这个mysql
  • @AaronBertrand 目前在 SQL server management studio 2008 上,我将删除标签,意思是说 microsoft sql。由于错误不是很详细,我该如何提取这些过程列?
  • 嗯,最简单的方法是查看存储过程,并计算最终 SELECT 中的列数,并检查至少计数是否与 @resultset 的定义匹配,然后继续从那里。这些输出并没有真正存储在 SQL Server 元数据though there are helper functions in SQL Server 2012 that could help you when you upgrade 的任何位置。

标签: sql-server stored-procedures sqldatatypes


【解决方案1】:

作为一种快速作弊方法,您可以将存储过程的内容作为 SQL 语句运行,并将最后一个 SELECT 语句更改为:

SELECT TOP 0 columnlist
INTO ResultTable
FROM LastSelectStatement

这将为您提供正确的列号和数据类型。

【讨论】:

  • 我没想过只是抓取大量代码并将其作为选择。代码很长而且令人困惑,这似乎是最好的答案。哪怕是骗人的。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-06
  • 2011-04-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多