代码之家  ›  专栏  ›  技术社区  ›  Joe Cast

SQL语法错误(仅当按计划作业运行时)

  •  1
  • Joe Cast  · 技术社区  · 8 年前

    只有通过调度程序运行作业时才会发生这种情况,直接运行时效果良好。

    DELETE FROM [NAVQueriesDB].[dbo].[New Items on Order] GO
      SET ANSI_WARNINGS OFF
      GO
     INSERT [NAVQueriesDB].[dbo].[New Items on Order] (
       [Updated Date], 
       [Location Code],
       [Order No_],
       [Item No_],
       [Item Description],
       [Variant Code],
       [Description 2],
       [Outstanding Qty_], 
       [Order Date],
       [Vendor_No],
       [Vendor_Name])
    
      SELECT  
        GETDATE() AS "Updated Date", 
        [Purch Line].[Location Code],
        [Purch Line].[Document No_],
        [Item].[No_],
        [Item].[Description],
        ISNULL([Purch Line].[Variant Code],'-') AS "Variant Code",
        ISNULL([Variant].[Description 2],'-') AS "Description 2", 
        CAST(SUM([Purch Line].[Outstanding Quantity]) as decimal(18,0)) AS "Outstanding Qty.",
        [Purch Line].[Order Date],
        [Purch Line].[Buy-from Vendor No_],
        [Vendor].[Name]
     FROM [Wings$Item] AS "Item"
      LEFT JOIN [Wings$Purchase Line] AS "Purch Line"
      ON [Item].[No_] = [Purch Line].[No_]
    
      LEFT JOIN [Wings$Item Variant] AS "Variant"
      ON [Item].[No_] = [Variant].[Item No_] AND [Purch Line].[Variant Code] = [Variant].[Code]
    
      LEFT JOIN [Wings$Vendor] AS "Vendor"
      ON [Purch Line].[Buy-from Vendor No_] = [Vendor].[No_]
    
      LEFT JOIN [Wings$Item Ledger Entry] AS "Item Ledger"
      ON [Item].[No_] = [Item Ledger].[Item No_]
    
      WHERE
        [Item].[No_] > '5618%'
        AND [Item].[No_] <> 'Z999999'
        AND [Item Ledger].[Item No_] IS NULL
     GROUP BY
      [Purch Line].[Location Code],
      [Purch Line].[Document No_], 
      [Item].[No_], 
      [Item].[Description],
      [Purch Line].[Variant Code], 
      [Variant].[Description 2],
      [Purch Line].[Outstanding Quantity], 
      [Purch Line].[Order Date],
      [Purch Line].[Buy-from Vendor No_], 
      [Vendor].[Name]
    ORDER BY
      [Location Code],
      [Item].[No_],
      [Item].[Description],
      [Purch Line].[Variant Code]
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Tom H zenazn    8 年前

    (IMO)在标识符中使用双引号是个坏主意。标准是 [] 如果它必须被引用(这也是为什么我在我的名字中避免使用空格,这样我就不必引用它们)。

    SQL代理默认为 QUOTED_IDENTIFIER 设置为 OFF . 如果将双引号改为方括号,则应该可以使用。或者(但不推荐),您可以包括脚本的第一行 SET QUOTED_IDENTIFIER ON .

    例如 GETDATE() AS "Updated Date" ... GETDATE() AS [Updated Date] 更好。 GETDATE() AS updated_date 是最好的。