循环通过游标,在每次迭代期间执行INSERTS

时间:2012-10-04 17:44:23

标签: oracle powerbuilder

我有一个光标c_email,其中包含电子邮件地址的查询。我需要遍历它,每次迭代都执行insert语句。

如何在powerbuilder中循环游标,直到游标结束

到目前为止,我有以下内容:

DECLARE c_email CURSOR FOR
 SELECT email_id
     ...

OPEN c_email;
CLOSE c_email;

3 个答案:

答案 0 :(得分:2)

OPEN c_email;
DO WHILE TRUE
FETCH c_email INTO :bind_variable;
if sqlca.sqlcode<>0 then exit 
End If
//......insert statement..
LOOP
CLOSE c_email ;

或者

Sybase支持从表中选择值并插入另一个表。

INSERT INTO table1 ( <column list> )
SELECT ( <column list> ) FROM table2 ; --> this is the SELECT from the CURSOR

答案 1 :(得分:1)

2012年还有人在使用CURSORS吗? 1985年被称为 - 他们希望他们的技术回归......

这是POWERBUILDER。有一个叫做DATAWINDOW的疯狂的东西。如果你无法弄清楚如何进行基于集合的INSERT / SELECT(这是最好的方法),那么将查询编码为数据窗口检索并在PowerScript中循环它。

FOR x = 1 to dw_1.rowcount()
  // ls_variable = dw_1.GetItemString( x, "colName")
  // INSERT into table (ls_variable, blah, blah);
  // Error checking
  // COMMIT or ROLLBACK
NEXT

答案 2 :(得分:0)

客户端游标不是最佳解决方案。最好在存储过程中编写这样的代码。 http://www.zuskin.com/pb_code.htm#Avoid_SQL