2

我开发了以下代码:

  CREATE PROCEDURE [dbo].[Test01]
  AS
  BEGIN
    SELECT * FROM TestTable
  END


  CREATE PROCEDURE [dbo].[Test02]
  AS
  BEGIN
    DECLARE @tmp TABLE
    (
      TestID int,
      Test   nvarchar(100),
    )
    INSERT INTO @tmp
    EXEC Test01
    SELECT COUNT(*) FROM @tmp
  END

但是,如果我添加或删除一列,TestTable我必须修改,@tmp否则结果是:

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

我怎么解决这个问题?

4

2 回答 2

2

尝试手动指定列:

SELECT a, b FROM TestTable

INSERT INTO @tmp (a, b)

这应该可以解决您提到的错误。

于 2012-10-02T11:21:15.813 回答
0

我的第一条评论SELECT *是不赞成,除非你真的知道你在做什么。在您的特定用例中,我强烈建议您不要使用它,正是因为它会使您陷入您已经确定的麻烦。

在您的特定情况下,对于编写的特定 SP,您没有使用 SET NOCOUNT ON,因此您可以使用检索计数

SELECT @@ROWCOUNT

但是正如马丁所评论的那样,这只是您拼凑的一些示例代码。否则,为什么还要使用 2 个 SP。

于 2012-10-02T11:14:33.073 回答