关键字“FOR”附近的语法不正确

时间:2013-05-10 07:19:52

标签: sql sql-server tsql

我写了下面提到的查询......

    DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Name)  
                    from dbo.[WorkflowInstanceParameter] 
            FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')


Go 
set @query = 'SELECT ' + @cols + ' 
            from 
            (
                select wi.Id,wip.Name, wip.stringValue
                from FROM [ESP2_DEV1].[dbo].[WorkflowInstanceParameter] wip,
 [WorkflowParameterGroupInstance] wpgi, [ESP2_DEV1].[dbo].[WorkflowInstance] wi,
 dbo.WorkflowDefinition wd
 where wip.[WorkflowParameterGroupInstanceId] = wpgi.id
 and wpgi.[WorkflowInstanceId] =wi.id and
  wi.workflowDefinitionId=wd.id
            ) x
            pivot 
            (
                max(stringValue)
                for Name in (' + @cols + ')
            ) p '

execute(@query)

但它失败了,错误"关键字' FOR'"

附近的语法不正确

任何人都可以帮我这个?????

2 个答案:

答案 0 :(得分:4)

对于这篇文章来说,这不是一个真正的答案,但是如果你把这个错误归结为其中一个最热门的点击。

我遇到了这个问题,因为我试图用@

命名游标
declare @someName cursor for 

这不起作用。

你需要这样做:

declare someName cursor for 

代替。

我不清楚是否总是如此,因为我在网上看到很多使用@和大量的例子,这些都不会引起混淆。我是sqlserver的新手,所以不确定这里是否有微妙的内容。然而,这肯定修复了我的错误。这一点似乎没有在网上记录多少,但this other question记录了它,但由于某种原因在谷歌上找到更难!

有趣的事情迫使名字!我将oracle架构转换为sqlserver并且必须将@添加到各处的变量,但显然不是这些变量!我猜那些做游标的人都错过了那次会议!

答案 1 :(得分:2)

关键字FROM在set @query子句中重复:

select wi.Id,wip.Name, wip.stringValue
            from FROM [ESP2_DEV1].[dbo].[WorkflowInstanceParameter] wip