0

UPDATE クエリに対してもカーソルを宣言して開くことができますか、それとも SELECT クエリに対してのみですか?

   EXEC SQL PREPARE S FROM :query;
   EXEC SQL DECLARE C CURSOR FOR S;
   DbUtilT::set_bind_variables(bind_dp,&paramList);
   EXEC SQL OPEN C USING DESCRIPTOR bind_dp;
   EXEC SQL WHENEVER NOT FOUND GOTO end_update_loop;
   EXEC SQL FETCH C USING DESCRIPTOR bind_dp;
   EXEC SQL COMMIT WORK;

これでいいですか?または、カーソルを SELECT ステートメントにのみ使用する必要がある場合、UPDATE クエリを実行するにはどうすればよいでしょうか?

4

1 に答える 1

1

query次のような場合:

SELECT id FROM mytable WHERE ... FOR UPDATE OF id

次に、次のことができます。

...
EXEC SQL FETCH C USING DESCRIPTOR bind_dp;
EXEC SQL UPDATE mytable SET id = <something> WHERE CURRENT OF C;

私はあなたが何を意味するのかよくわかりません。更新を行うためにカーソルを使用する必要はありません。次のことができます。

EXEC SQL UPDATE mytable SET id = <something> WHERE ...;

... または同等の準備済みステートメント。

質問を完全に誤解していますか?

于 2013-04-17T10:06:03.150 に答える