动态SQL - 通过执行存储过程

时间:2016-02-02 11:51:56

标签: sql sql-server tsql stored-procedures

我的问题与此处已经回答的问题略有不同。

我有一个存储过程,它有1个参数,并根据该参数返回不同的结果(列数)。在这个存储过程中,我创建了一个名为#FreightData的表。存储过程的结束具有以下内容:

IF @IncludeIDs = 0 
BEGIN 
    select [Buyer], [Contract], [Product], [Shipowner], [DespatchOrder] from  #FreightData
END
ELSE 
BEGIN
    select * from #FreightData
END

以上所有内容均已成功运作。

然后,在另一个名为[FreightProfile]的存储过程中,我尝试使用以下结果填充#temp表:

EXEC [dbo].[EXCEL_FreightData] @IncludeIDs = 1

我使用了[EXCEL_FreightData]中的完全相同的CREATE TABLE定义(使用不同的表名 - #FreightProfile_results)并尝试使用

填充新的临时表
INSERT INTO #FreightProfile_results
EXEC [dbo].[EXCEL_FreightData] @IncludeIDs = 1

但是,我收到了错误:

  

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

我现在正在尝试使用OPENROWSET解决方案,因此我不必提供表格定义,以解决这个问题,但如果有人对上述内容有任何建议,那就太多了不胜感激!

1 个答案:

答案 0 :(得分:0)

我的坏!

我在表定义中复制了以下内容,因此出现了问题。

[ID] [int] identity (1,1) Not Null