Ich habe mehrere Beispiele gelesen, wie man einen Ausgabeparameter mit dynamischem sql zurückgibt, aber alle waren etwas anders, weil sie die Variable innerhalb der Prozedur erzeugten, anstatt sie (I nehme an, das ist die Wurzel meines Problems). Ich erhalte den Fehler:Dynamische SQL mit Ausgabeparameter Syntax Klarheit benötigt
Must declare the table variable "@tbl".
Wenn ich versuche, die folgende Prozedur auszuführen (aufgeführt nach dem Testcode, der es ausführt). Bin ich in der Nähe?
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