2016-03-24 13 views
0

カーソルを使用して選択クエリの結果をストアドプロシージャに使用したいが、機能しません。どのように私は、SELECTステートメントの結果をループしてSQLとストアドプロシージャの結果を使用するのですか?

DECLARE @NumberPhone varchar(50) 
DECLARE CUR CURSOR STATIC FOR 

SELECT MobilePhone 
FROM info_client 

OPEN CUR 
FETCH NEXT FROM CUR INTO @NumberPhone 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    DECLARE @return_value int, @idCli int, @sCode varchar(2) 

    EXEC @return_value = StoredP_Test 
      @sLignePhone = @NumberPhone, 
      @sIMEI ='00000000000000000', 
      @idCli = @idCli OUTPUT, 
      @sCode = @sCode OUTPUT 

    SELECT @idCli as N'@idCli', 
      @sCode as N'@sCode' 

    FETCH NEXT FROM CUR INTO @NumberPhone 

    SELECT 'Return Value' = @return_value 
END 

CLOSE CUR 
DEALLOCATE CUR 

このコードは、選択クエリの行数と同じ結果を複製:

は、ここに私のコードです。

+0

どの手順をEXECにしようとしていますか?名前がありませんか? – mxix

+0

最初のラウンドでは '@ NumberPhone'を使用していますが、残りの部分には' @ sLigneAssValue'を使用しています –

+0

カーソルはまったく必要ありませんか?カーソルが何をしているかによって、このプロセスを遅くすることができます。 –

答えて

1

あなたのコードは初期

FETCH NEXT FROM CUR INTO @NumberPhone 

のフェッチあなたのコードは

FETCH NEXT FROM CUR INTO @sLigneAssValue 

はあなたが@NumberPhone変数に次のフェッチたくなかったループ内で次のフェッチしていましたか?

@NumberPhone変数は決して変更されません。

+0

私はコードを投稿するときにエラーが発生しました。なぜ、私はvaribaleを持っていますが、同じではありませんが、コードを編集しました。それをchgangedしました。 問題は次のとおりです。実行されたプロシージャの結果は、選択された最初の行のnumberphoneプロシージャに渡され、次の行などに渡されなかったため、常に同じ結果になります – Sorinzo

関連する問題