-1

私は 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() などの関数を呼び出すだけでよいように、リセットを行う関数を呼び出すより良い方法はありますか。より明確になりましたか?

4

2 に答える 2

0

5 つの out パラメータを持つストアド プロシージャを使用できます。

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
于 2012-05-03T17:10:06.730 に答える
0

方法 1: 切断して SQL Server に接続します。

方法 2 : Ctrl-A Ctrl-C Ctrl-N Ctrl-V コードを新しいウィンドウにコピーします。

于 2016-05-02T06:47:59.020 に答える