我正在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 :(得分: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