Вызвать некоторый SQL-код для сброса значений локальных переменных
Я использую Sql Server 2008. В моем файле sql я определил 5 локальных переменных (все они int) и установил их все в 0. Затем я выполняю некоторые операции (не в цикле). После каждой операции мне нужно сбросить значения локальных переменных на 0. Сейчас я вручную устанавливаю все переменные на 0 после каждой операции. Есть ли лучший способ сбросить их все в 0 каждый раз, возможно, вызывая какую-то функцию, а не вручную делать это?
DECLARE @int1 int
DECLARE @int2 int
DECLARE @int3 int
DECLARE @int4 int
DECLARE @int5 int
SET @int1 = 0
SET @int2 = 0
SET @int3 = 0
SET @int4 = 0
SET @int4 = 0
-- Operation 1
SELECT * FROM Orders
-- Reset values (Number of times the reset code written: 1)
SET @int1 = 0
SET @int2 = 0
SET @int3 = 0
SET @int4 = 0
SET @int4 = 0
-------------------- END OF OPERATION 1 and RESETTING VARIABLES ---------------
-- Operation 2
SELECT * FROM Lines
-- Reset values (Number of times the reset code written: 2)
SET @int1 = 0
SET @int2 = 0
SET @int3 = 0
SET @int4 = 0
SET @int4 = 0
-------------------- END OF OPERATION 2 and RESETTING VARIABLES ---------------
-- Operation 3
SELECT * FROM Customers
-- Reset values (Number of times the reset code written: 3)
SET @int1 = 0
SET @int2 = 0
SET @int3 = 0
SET @int4 = 0
SET @int4 = 0
-------------------- END OF OPERATION 3 and RESETTING VARIABLES ---------------
-- Operation 4
SELECT * FROM Address
-- Reset values (Number of times the reset code written: 4)
SET @int1 = 0
SET @int2 = 0
SET @int3 = 0
SET @int4 = 0
SET @int4 = 0
-------------------- END OF OPERATION 4 and RESETTING VARIABLES ---------------
-- Operation 5
SELECT * FROM Accounts
-- Reset values (Number of times the reset code written: 5)
SET @int1 = 0
SET @int2 = 0
SET @int3 = 0
SET @int4 = 0
SET @int4 = 0
-------------------- END OF OPERATION 5 and RESETTING VARIABLES ---------------
Как ясно видно, сброс локальных переменных был записан 5 раз (обозначается как "Количество написанных кодов сброса: #"). Есть ли лучший способ вызвать функцию, которая выполняет сброс, так что мне нужно только вызвать функцию, например ResetVaraibles(), которая будет иметь код сброса локальных переменных. Теперь это более понятно?
2 ответа
Способ 1: отключить и подключиться к SQL Server.
Способ 2: Ctrl-A Ctrl-C Ctrl-N Ctrl-V Скопировать код в новое окно.
Вы могли бы сохранить хранимую процедуру с 5 выходными параметрами.
create procedure ResetTo0
@int1 int out,
@int2 int out,
@int3 int out,
@int4 int out,
@int5 int out
as
set @int1 = 0
set @int2 = 0
set @int3 = 0
set @int4 = 0
set @int5 = 0
И это будет называться так.
exec ResetTo0 @int1 out, @int2 out, @int3 out, @int4 out, @int5 out
Но я не думаю, что вы получите много (если вообще что-то) по сравнению с использованием select для сброса значений.
select @int1 = 0, @int2 = 0, @int3 = 0, @int4 = 0, @int5 = 0