我有一个光标c_email
,其中包含电子邮件地址的查询。我需要遍历它,每次迭代都执行insert语句。
如何在powerbuilder中循环游标,直到游标结束
到目前为止,我有以下内容:
DECLARE c_email CURSOR FOR
SELECT email_id
...
OPEN c_email;
CLOSE c_email;
答案 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