行のセットを返すSELECTステートメントがあります。
各行から、1つの列の値を取得し、それをストアドプロシージャに渡して、行のセット自体に提供する必要のある値を取得する必要があります。
例えば:
DECLARE @col1 int
DECLARE @col2 int
DECLARE @col3 varchar(20)
DECLARE myCursor CURSOR FOR
SELECT col1, col2, col3
FROM table1
WHERE....
OPEN myCursor
FETCH NEXT FROM myCursor
INTO @col1, @col2
WHILE @@FETH_STATUS = 0
BEGIN
SET @col3 = EXEC proc_GetCol3_Value @col1, @col2
FETCH NEXT FROM myCursor
INTO @col1, @col2
END
CLOSE myCursor
DEALLOCATE myCursor
ここで、それに基づいて、元のカーソルによって取得された行と、実行されたストアドプロシージャから取得された値を列3の値として返します。
たとえば、SQLカーソルによって返される行は次のとおりです。
col1 col2 col3
1 5000
2 5000
3 2500
4 2000
そして、私が必要としているのは、カーソルとストアドプロシージャを実行した後にすべての列が指定され、結果セットが次のようになることです。
col1 col2 col3
1 5000 APPROVED
2 5000 REJECTED
3 2500 CANCELLED
4 2000 APPROVED
どんなアイデアでも大歓迎です。ありがとう。
PS JOINステートメントを使用することをお勧めすることはたくさんありますが、実行するストアドプロシージャは非常に複雑であるため、カーソルSQLステートメントを使用して結合するのは複雑すぎます。