Sybase优化器为DELETE查询创建游标,然后失败

时间:2010-07-29 11:20:37

标签: sybase

我们正在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来执行它?

1 个答案:

答案 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'是该行的唯一键。