2012-05-03 145 views
0

我无法理解为什么我的输出变量在下面的代码中返回null。我已经在调试中介绍了它,并且复制/运行了sql语句,并且它确实返回了期望的值。但是,当我运行它,只是空。任何帮助将是伟大的..SQL Server 2008为输出值返回空值的存储过程

ALTER PROCEDURE [dbo].[spCountOfMostRecentByTableName] @table VARCHAR(120), 
    @count BIGINT OUTPUT 

AS 
BEGIN 

DECLARE @parameters NVARCHAR(100) 
SET @parameters = '@count BIGINT OUTPUT' 

DECLARE @date DATE = dbo.MostRecentTradeDateForDataDownload() 

DECLARE @sql NVARCHAR(MAX) = N' 

SELECT COUNT(ID) 
FROM ' + @table + 
' WHERE DateAdded = ''' + CAST(@date AS CHAR) + ''''; 

EXEC sp_executesql @sql, @parameters, @count = @count OUTPUT 
SELECT @count 

END 
+0

*快门*。 SQL注入的这种类型的过程已经成熟。 – Thomas

+0

@Thomas谢谢。我知道这与生产环境中的最佳实践远远不同,但这是驻留在本地计算机上的个人应用程序,很可能会保持这种状态。 – StatsViaCsh

回答

1

您没有在任何地方设置@count变量。

变化

SELECT COUNT(ID)

SELECT @count = COUNT(ID)

+0

当然。谢谢。 :) – StatsViaCsh