首先呢 你应该是把 FROM 错写成 FORM 了吧 后边的看不清楚了 如果时一张表直接UPDATE就行
请按步就班地学习update和游标方面的知识,不能一蹴而就。
如果能用Sql语句搞定效率还是比较高
楼主,当你的游标定义了以后,就不会根据表数据变化而变化了,除非你重新open后
(1) CURSOR CUR_A SELECT .... FROM TABLE_A WHERE X = 'AAA'FOR REC_A IN CUR_A LOOP UPDATE TABLE_A SET ... WHERE X = REC_A.X --//此处象更新的是REC_A所指向的记录 END LOOP(2) UPDATE TABLE_A SET ... WHERE X = 'AAA'这么说(1)和(2)没什么区别乐?
不太明白。 如果 X 是唯一索引,那么WHERE X = 'AAA'只有一条纪录。 如果 X 不是, WHERE X = REC_A.X --//此处象更新的是REC_A所指向的记录 对于每一条纪录都要更新多个纪录, 这里 X 到底是不是一个?
谢谢上面各位^^ UPDATE TABLE_A SET ... WHERE X1 = 'BBB' 这样不是查询表,找出满足条件的数据再UPDATE么?是这样么FOR REC_A IN CUR_A LOOP UPDATE TABLE_A SET ... FORM X = REC_A.X -- KEY END LOOP这样的UPDATE,是不用重新查询表了么?
你应该是把 FROM 错写成 FORM 了吧
后边的看不清楚了
如果时一张表直接UPDATE就行
CURSOR CUR_A
SELECT
....
FROM
TABLE_A
WHERE X = 'AAA'FOR REC_A IN CUR_A LOOP
UPDATE
TABLE_A
SET
...
WHERE
X = REC_A.X --//此处象更新的是REC_A所指向的记录
END LOOP(2)
UPDATE
TABLE_A
SET
...
WHERE
X = 'AAA'这么说(1)和(2)没什么区别乐?
如果 X 是唯一索引,那么WHERE X = 'AAA'只有一条纪录。
如果 X 不是,
WHERE
X = REC_A.X --//此处象更新的是REC_A所指向的记录
对于每一条纪录都要更新多个纪录,
这里 X 到底是不是一个?
TABLE_A
SET
...
WHERE
X1 = 'BBB'
这样不是查询表,找出满足条件的数据再UPDATE么?是这样么FOR REC_A IN CUR_A LOOP
UPDATE
TABLE_A
SET
...
FORM
X = REC_A.X -- KEY
END LOOP这样的UPDATE,是不用重新查询表了么?