Sql server 查询(SQLServer2008Express)可以在SQLServerManagementStudio中使用,但不能在使用ADODB的Delphi中使用
我有以下疑问:Sql server 查询(SQLServer2008Express)可以在SQLServerManagementStudio中使用,但不能在使用ADODB的Delphi中使用,sql-server,delphi,tsql,sql-server-express,adodb,Sql Server,Delphi,Tsql,Sql Server Express,Adodb,我有以下疑问: 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 frameIn
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中使用management studio运行查询时,都不会出现任何问题(这是过去两个版本的工作)。但是,当我尝试使用Delphi中的ADODB执行此查询时,我得到一个错误,即
Incorrect syntax near the keyword WITH
在SQL的express版本中是否不允许此类查询?查询中的问题是什么?客户端使用SQL express,因此我需要找到在express版本中运行的此问题的解决方案。我不知道这是否有帮助,但您可以在查询之前尝试:
; WITH cte AS (
...
听起来ADODB不支持这个…所以4张赞成票和一张接受票。。。。Sambatyon确认这解决了问题吗?如果是这样的话,我也会投票。我可以确认在ADODB查询中使用CTE是必要的;在使用之前,基本上是“确定确定”。