等效于Sybase ASE中的WITH子句

时间:2017-06-27 23:37:21

标签: sybase-ase sybase-ase15

似乎仅在 Sybase SQL Anywhere 中支持WITH: http://dcx.sybase.com/1100/en/dbusage_en11/commontblexpr-s-5414852.html

...但不在Sybase ASE中 :(

有人可以建议Sybase ASE中是否有等效的构造?还有其他方法来实现东西而不是使用WITH,但是我们计划重新调整一些动态生成的SQL,以便在Sybase中运行,并且非常需要支持WITH或接近该语法的东西。

1 个答案:

答案 0 :(得分:1)

ASE不支持公用表表达式(例如,WITH子句)。

(显而易见的)解决方法是#temp表,视图,物化视图(也称为预先计算的结果集),表变量(ASE 16.0 SP02 +),以及在有限情况下可能派生的表和/或(相关的)子查询。

注意:我不使用SQL Anywhere,所以不确定这在技术上是否可行但是fwiw ......

我认为可能有一种方法可以从SQL Anywhere到ASE设置代理表,其目的是在SQL Anywhere中运行CTE / WITH查询。

当然,即使技术上可行,您也在考虑维护SQL Anywhere数据库的额外开销,并且此类服务器间查询的性能可能是不可接受的(例如,将所有数据从ASE拉入SQL Anywhere到实际上,实现了CTE)。