我开发了下面的代码数量/类型的列的:获取行的存储过程的结果计数,无论
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
否则其结果是:
列名或提供值的数目不匹配表定义
我该如何解决这个问题?
这可以通过['OPENQUERY' /'OPENROWSET'](http://stackoverflow.com/questions/3005361/how-to-query-on-table-returned-by-stored-procedure-within-a - 程序/ 3005435#3005435),但似乎非常低效。如果你需要一个查询来获得某些东西,你最好写这个特定的查询。此外,如果您将存储的proc重写为内嵌TVF,那么您可以在其上调用COUNT(*)',这应该是效率明智的。 –
对不起,我简化了也没有解释问题:第一个SP执行JOIN给我一个结果,第二个SP,只有当第一个SP中的结果数等于传递的参数时才插入行。 无论如何非常感谢你,我用OPENROWSET解决了这个问题。 Damiano – Blackshark