我開發了下面的代碼數量/類型的列的:獲取行的存儲過程的結果計數,無論
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