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

しかし、Martinがコメントしているように、それはあなたが一緒に投げたサンプルコードのほんの一部です。それ以外の場合は、2つのSPを使用する必要があります。

于 2012-10-02T11:14:33.073 に答える