我开发了以下代码:
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
,否则结果为:
列名或提供的值数与表定义
不匹配
我该如何解决这个问题?
答案 0 :(得分:2)
尝试手动指定列:
SELECT a, b FROM TestTable
和
INSERT INTO @tmp (a, b)
这应该可以解决您提到的错误。
答案 1 :(得分:0)
我的第一个评论是SELECT *
不赞成,除非你真的知道你在做什么。我会强烈建议您在特定用例中反对它,正是因为它可以帮助您解决您已经发现的问题。
在您的特定情况下,对于编写的特定SP,您尚未使用SET NOCOUNT ON,因此您可以使用
检索计数SELECT @@ROWCOUNT
但是,正如马丁评论的那样,这只是你拼凑的一些示例代码。否则,为什么甚至使用2个SP。