Можно ли присвоить значение переменной, передать ее в сохраненный процесс, а затем в сохраненный процесс: 1.) использовать значение, переданное в, 2.) изменить значение, присвоенное переменной, и 3.) передать переменную обратно?Передача переменной в хранимую процедуру SQL ByRef?
Я пытаюсь настроить «Time Hack», чтобы я мог перемещаться по всем процедурам, чтобы проверить, какие операторы работают медленно. Ниже приведен пример процедуры и обращения к ней.
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)
Вот как выглядит результат. Похоже, что @START_TIME обработано как входная переменная, и процедура не изменила значение @T. Почему это произошло, если переменная была объявлена как выходная переменная?
@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
Заранее благодарим за любую помощь.
Угу. тупой ошибка. Я просто никогда не пробовал это раньше и думал, может быть, идея была неправильной. Большое спасибо за быстрый ответ! – JBStovers
Никогда не использовался DMV. Похож на весь мир, который заставит меня разобраться, чтобы понять. Будет ли 'sys.dm_exec_query_stats' тем, кого я ищу? – JBStovers
Да, также 'sys.dm_exec_procedure_stats' для более высокого уровня для каждой статистики процедур. –