我们可以使用游标进行UPDATE查询吗?

时间:2013-04-17 09:48:25

标签: sql oracle dynamic-sql bind-variables

我们是否可以为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查询呢?

1 个答案:

答案 0 :(得分: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 ...;

......或等效的预备陈​​述。

我完全误解了这个问题吗?