我们正在C:
中使用嵌入式SQL执行以下查询 DELETE archive_table FROM archive_table arc, #arc_chunk loc WHERE arc.col = loc.col
Sybase的回应是:
DELETE WHERE CURRENT OF 光标'C42'因光标而失败 正在加入。
将查询构造为C字符串,然后在嵌入式SQL中使用EXECUTE IMMEDIATE执行。
有没有办法在没有Sybase优化器创建游标(失败)的情况下执行此DELETE来执行它?
答案 0 :(得分:0)
在from子句中使用删除目标表时,不要在其上添加别名。
DELETE archive_table
FROM archive_table, #arc_chunk loc
WHERE archive_table.col = loc.col
[编辑]
另一种可能性是删除连接的需要并将其全部折叠到where子句中。
DELETE archive_table
WHERE EXISTS ( SELECT 1 FROM #arc_chunk loc WHERE archive_table.col = loc.col )
我假设'col'是该行的唯一键。