Я прочитал несколько примеров того, как вернуть выходной параметр с динамическим sql, но все они немного отличались тем, что создали переменную внутри процедуры, а не передавали ее (я предполагаю, что это корень моя проблема). Я получаю ошибку:
Must declare the table variable "@tbl".
Когда я пытаюсь запустить описанную ниже процедуру (указывается после кода теста, который ее выполняет). Я рядом?
DECLARE @tbl nvarchar(40)
DECLARE @bnch INT
SET @tbl = 'tblDailyPricingAndVol'
EXEC sprocReturnDataPointBenchmark @tbl, @bnch
sproc:
ALTER PROCEDURE [dbo].[sprocReturnDataPointBenchmark] @tblName NVARCHAR(50),
@benchmark BIGINT OUTPUT
AS
BEGIN
DECLARE @sql nvarchar(1000),
@parameters NVARCHAR(100) = N'@tbl NVARCHAR(50), @benchOUT BIGINT OUTPUT';
SET @sql = N'SELECT @benchOUT = Count(ID) FROM @tbl WHERE DateAdded = ' +
'(SELECT MAX(DateAdded) FROM tblDailyATR AS T2)';
EXEC sp_executesql @sql, @parameters, @tbl = @tblName, @benchOUT = @benchmark OUTPUT
SELECT @benchmark
END