Ist es möglich, einer Variablen einen Wert zuzuweisen, ihn an einen gespeicherten Proc zu übergeben und dann innerhalb des gespeicherten proc: 1.) den übergebenen Wert zu verwenden, 2.) den der Variablen zugewiesenen Wert zu ändern, und 3..) die Variable zurückgeben?Übergeben einer Variablen an SQL-gespeicherte Prozedur ByRef?
Ich versuche einen "Time Hack" zu erstellen, den ich in Prozeduren durchsetzen kann, um zu überprüfen, welche Anweisungen langsam ausgeführt werden. Unten ist ein Beispiel für die Prozedur und ein Aufruf an sie.
CREATE PROC [dbo].[usp_TIME_HACK_TEST]
@TITLE VARCHAR(255),
@START_TIME DATETIME OUT
AS
BEGIN
PRINT @TITLE + ': ' + RIGHT(CONVERT(VARCHAR(50),GETDATE() - @START_TIME,13),12)
SET @START_TIME = GETDATE()
END
GO
DECLARE @x int = 0
DECLARE @T DATETIME = GETDATE()
Print '@T Value at Beginning: ' + convert(VARCHAR(50),@T,21)
WHILE @x < 1000000
SET @x += 1
EXEC usp_TIME_HACK_TEST
@TITLE = 'Test Run',
@START_TIME = @T
Print '@T Value at End: ' + convert(VARCHAR(50),@T,21)
So sieht das Ergebnis aus. Es sieht so aus, als ob @START_TIME als Eingabevariable behandelt wurde und die Prozedur den Wert von @T nicht geändert hat. Warum ist das passiert, wenn die Variable als Ausgabevariable deklariert wurde?
@T Value at Beginning: 2016-07-27 11:21:19.720
Test Run: 00:00:00:607
@T Value at End: 2016-07-27 11:21:19.720
Vielen Dank im Voraus für jede Hilfe.
Yup. dummer Fehler. Ich hatte das noch nie zuvor versucht und dachte, dass die Idee vielleicht falsch war. Vielen Dank für die schnelle Antwort! – JBStovers
Niemals zuvor DMVs verwendet. Sieht nach einer ganzen Welt aus, die mich eine Weile brauchen würde, um sie zu verstehen. Würde 'sys.dm_exec_query_stats' die gesuchte sein? – JBStovers
Ja, auch 'sys.dm_exec_procedure_stats' für eine höhere Stufe pro Prozedur-Statistik. –