我们是否可以为UPDATE查询声明和打开游标,还是仅用于SELECT查询?
EXEC SQL PREPARE S FROM :query;
EXEC SQL DECLARE C CURSOR FOR S;
DbUtilT::set_bind_variables(bind_dp,¶mList);
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查询呢?
答案 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 ...;
......或等效的预备陈述。
我完全误解了这个问题吗?