2

ストアドプロシージャを数回呼び出す必要があります。どうすればこれをループに入れることができますか?

DECLARE @return_value int,
                @sinresultado varchar(200),
                @svcmensaje varchar(200)

EXEC    @return_value = [dbo].[ppocfdcancelacionwsejecuta]
                @evcrfcemisor = N'BBA940707IE1',
                @evcserie = N'XXAABB',
                @evcfolio = N'666',
                @sinresultado = @sinresultado OUTPUT,
                @svcmensaje = @svcmensaje OUTPUT

@evcfolio同じループで1から10まで実行する必要があります。Javaのforと、evcfolioループごとに1ずつ増加する値のように。

御時間ありがとうございます。

4

2 に答える 2

5
Declare @Counter int;
Declare @CounterText nvarchar(10);
Declare @return_value int,
                @sinresultado varchar(200),
                @svcmensaje varchar(200);
Set @Counter = 666;

While @Counter < 676
Begin
    Set @CounterText = Cast( @Counter As nvarchar(10));
    exec @return_value = [dbo].[ppocfdcancelacionwsejecuta]
                    @evcrfcemisor = N'BBA940707IE1',
                    @evcserie = N'XXAABB',
                    @evcfolio = @CounterText,
                    @sinresultado = @sinresultado OUTPUT,
                    @svcmensaje = @svcmensaje OUTPUT
    Set @Counter = @Counter + 1;
End
于 2012-08-13T15:04:26.990 に答える
2

プロシージャを複数回呼び出すのではなく、ストアドプロシージャを再構築してループ(またはTVPのセット)を処理する方が良いアプローチであることに同意しますが、それまでの間、どの言語のループもかなり簡単で、次のことができます。このようなもの:

DECLARE @i INT;
SET @i = 666;

WHILE @i <= 675
BEGIN
    EXEC ... @evcfolio = @i ...;
    SET @i += 1;
END
于 2012-08-13T15:04:21.317 に答える