2013-04-17 112 views
0

我们是否可以为UPDATE查询声明并打开一个游标呢,还是仅用于SELECT查询?我们可以使用游标进行UPDATE查询吗?

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查询?

+0

这是在Pro * C吗? –

+0

@Alex - 是的,这是在Pro * C – user862833

回答

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 ...; 

...或等效的预备声明。

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

+0

雅这是正确的,当我们没有在查询中绑定变量。 如果我使用查询绑定变量.. 更新设置 =:BIND_VAR1其中 =:BINDVAR2和 =:BINDVAR3 如何去用? – user862833

相关问题