2012-05-03 1 views
-1

Я использую Sql Server 2008. В моем sql-файле я определил 5 локальных переменных (все из них int) и установил их все в 0. Затем я выполняю некоторые операции (не в петле). После каждой операции мне нужно сбросить значения локальных переменных до 0. Сейчас я вручную устанавливаю все переменные в 0 после каждой операции. Есть ли лучший способ каждый раз переустанавливать их на 0, возможно, вызывая некоторую функцию, а не делая это?Чтобы вызвать код sql для сброса значений локальных переменных

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

Вы считаете размещение фактического кода, а не его плохим описанием? –

+0

Тот факт, что вы хотите сделать это, предполагает, что вы, возможно, неправильно подходите к реальной проблеме. –

+0

Настоящая проблема заключается в том, что я не хочу писать код сброса N раз. Я ищу многоразовый код, который может помочь мне сделать это, просто называя этот многократный код N числом раз. Как правило, это может быть легко достигнуто, вызывая функцию на любом языке опробования. – user1274655

ответ

0

Возможно, у вас есть хранимая процедура с 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 @int1 = 0, @int2 = 0, @int3 = 0, @int4 = 0, @int5 = 0 
0

Путь 1: Отключить и подключиться к SQL Server.

Путь 2: Ctrl-A Ctrl-C Ctrl-N Ctrl-V Скопировать код в новое окно.