调用一些sql代码来重置局部变量的值

时间:2012-05-03 13:47:18

标签: sql sql-server-2008 code-reuse sql-function sqlcode

我正在使用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 个答案:

答案 0 :(得分: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重置值相比,我认为你获得的收益不大(如果有的话)。

select @int1 = 0, @int2 = 0, @int3 = 0, @int4 = 0, @int5 = 0

答案 1 :(得分:0)

方法1:断开连接并连接到SQL Server。

方式2:Ctrl-A Ctrl-C Ctrl-N Ctrl-V将代码复制到新窗口。