Query (SQL Server 2008 Express) 在 SQL Server Management Studio 中有效,但在 Delphi 中使用 ADODB 无效
Posted
技术标签:
【中文标题】Query (SQL Server 2008 Express) 在 SQL Server Management Studio 中有效,但在 Delphi 中使用 ADODB 无效【英文标题】:Query (SQL Server 2008 Express) works in SQL Server Management Studio but not in Delphi using ADODB 【发布时间】:2010-10-04 13:44:47 【问题描述】:我有以下疑问:
WITH cte AS (
SELECT
windowId, frameIndx, elemIndx, comment,
ROW_NUMBER() OVER (PARTITION BY frameIndx ORDER BY elemIndx DESC)
AS
rn
FROM
dbo.translations
WHERE
windowId = 1 AND frameIndx IN (
SELECT
indx
FROM
dbo.translations_window
WHERE program_id = 1 AND active = 1
)
)
SELECT
windowId, frameIndx, elemIndx, comment
FROM
cte
WHERE
rn = 1
在使用管理工作室的 SQL Server 2008 R2 Developer(无论如何)、SQL Server 2005 Express 和 SQL Server 2008 R2 Express 中运行时,查询执行没有问题(这适用于最后两个)。但是,一旦我尝试使用 Delphi 的 ADODB 执行此查询,我就会收到一条错误消息。
Incorrect syntax near the keyword WITH
在 SQL 的快速版本中是否不允许此类查询?查询中有什么问题?客户端使用 SQL express,所以我需要找到一个在 express 版本中运行的解决方案。
【问题讨论】:
听起来 ADODB 不支持这个... 【参考方案1】:我不知道它是否有帮助,但您可以在查询前尝试put a semicolon:
; WITH cte AS (
...
【讨论】:
所以 4 票赞成和接受.... Sambatyon 是否确认这可以解决问题?如果是这样,我也会投票。 我可以确认这是在 ADODB 查询中使用 CTE 所必需的。 我见过的大多数使用 CTE 的文档都建议添加 ;在 with 之前,基本上是“to be sure to be sure”。以上是关于Query (SQL Server 2008 Express) 在 SQL Server Management Studio 中有效,但在 Delphi 中使用 ADODB 无效的主要内容,如果未能解决你的问题,请参考以下文章
SQL Query (SQL Server 2008) 从两个表中检索数据并对结果进行分组
Excel 2007 MS Query 中的多部分标识符错误,但 SQL Server 2008 中没有
SQL Server 2008R2 用户定义函数(表值)性能