9

SQL Server を使用してストアド プロシージャを作成し、カーソルを使用して select ステートメントをループしています

次のようにカーソルを定義しています。

DECLARE @c_col1 varchar(max);
DECLARE @c_col2 varchar(max);

DECLARE c as CURSOR FOR 
SELECT col1, col2 
FROM table;

OPEN c;
FETCH NEXT FROM c INTO
@c_col1, @c_col2;

SELECT @c_col1, @c_col2;

各列の変数を宣言し、FETCH 句で INTO を使用する必要なく、カーソルの列にアクセスする方法はありますか? 言い換えれば、使用することは可能ですか:

DECLARE c as CURSOR FOR 
SELECT col1, col2 
FROM table;

OPEN c;
FETCH NEXT FROM c; 

SELECT c.col1, c.col2;
4

2 に答える 2

4

いいえ、カーソルの値をクライアントに返すのではなく、ローカル変数に格納する場合は、そのようにする必要があります。

于 2009-08-19T10:09:12.740 に答える
0

これがあなたのポーセデュア全体である場合(OPの質問から):

DECLARE @c_col1 varchar(max);
DECLARE @c_col2 varchar(max);

DECLARE c as CURSOR FOR 
SELECT col1, col2 
FROM table;

OPEN c;
FETCH NEXT FROM c INTO
@c_col1, @c_col2;

SELECT @c_col1, @c_col2;

次に、次の操作を実行して、2 つの列の結果セットを返すことができます。カーソルは必要ありません。

SELECT top 1 col1, col2 
FROM table;
于 2009-08-19T11:49:15.580 に答える