我注意到Sybase SQL Anywhere支持它们,但找不到任何关于ASE是否也支持的文档。
如果不支持,那么设计递归查询的最佳选择是什么?在SQL Server 2008中,我会使用CTE来完成,但如果不可用呢?也许使用一个函数?
如果不支持,那么设计递归查询的最佳选择是什么?在SQL Server 2008中,我会使用CTE来完成,但如果不可用呢?也许使用一个函数?
Sybase ASE 12.5(以及15.0)不支持CTE。
您可以使用内部查询来解决您的问题。
像这样简单的CTE:
WITH Sales_CTE (Folders_Id)
AS
-- Define the CTE query.
(
SELECT Folders_Id FROM Folders
)
SELECT Folders_Id FROM Sales_CTE
就相当于这个:
SELECT aux.Folders_Id
FROM (SELECT Folders_Id FROM Folders) aux
想了解更多信息,请查看this!
您可以使用函数来提供CTE的功能,但不建议这样做。函数旨在用于不同的、面向列的目的,代码受到这些限制的约束。它是标量的,适用于构造列值。存储过程和CTE是面向行的。
RECURSIVE
关键字的要求,则完全兼容),这种语法在包括 ASA 和 SQL Server 在内的多个 RDBM 中都存在。还有其他我不知道的语法吗? - Adam Robinson