2016-07-05 69 views
0

我正在SQL Server 2008 R2中編寫存儲過程。將名稱的行計數作爲參數分配給存儲過程

我想要做的是將一個表的行計數分配給一個變量;不過,我只是將該表的名稱作爲參數傳遞給存儲過程。

這是我寫的代碼,它不工作。

CREATE PROCEDURE [dbo].[Foo] 
     @inputTableName VARCHAR(50) 
    AS 
    BEGIN 
     /*First Attempt*/ 
     DECLARE @numOfRows INT = (SELECT COUNT(*) FROM @inputTableName) 
     /*Second Attempt*/ 
     DECLARE @numOfRows INT = (EXEC('SELECT COUNT(*) FROM ' + @inputTableName)) 
    END 

在第一次嘗試,我收到此錯誤:必須聲明表變量「@inputTableName」

在第二個,我得到這個:附近有語法錯誤EXEC

任何幫助表示讚賞。

回答

0
CREATE PROCEDURE [dbo].[Foo] 
    @inputTableName SYSNAME 
, @RowNumber  INT  OUTPUT 
AS 
BEGIN 
    SET NOCOUNT ON; 
    Declare @Sql Nvarchar(max); 

    SET @Sql = N' SELECT @RowNumber = COUNT(*) FROM ' + QUOTENAME(@inputTableName) 

    Exec sp_executesql @Sql 
        ,N'@RowNumber INT OUTPUT' 
        ,@RowNumber OUTPUT 
END 
相關問題