Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何解释T-SQL错误不正确的语法_Sql Server_Tsql - Fatal编程技术网

Sql server 如何解释T-SQL错误不正确的语法

Sql server 如何解释T-SQL错误不正确的语法,sql-server,tsql,Sql Server,Tsql,我不太明白如何解释有关行号和批处理起始行的t-SQL错误消息 尝试运行创建过程时,出现以下错误: Msg 102,15级,状态1,程序加载索引器报告,第119行[批处理起始行9] 附近的语法不正确 Msg 102,15级,状态1,过程装入索引器报告,第120行[批处理起始行9] 附近的语法不正确 当我转到第119行时,我知道代码应该是好的,因为我复制粘贴了代码,所以我决定注释掉整个块 我仍然会得到相同的错误,但是119周围的所有行实际上都被注释掉了 我该怎么解释呢 关于T-SQL报告错误的奇怪方

我不太明白如何解释有关行号和批处理起始行的t-SQL错误消息

尝试运行创建过程时,出现以下错误:

Msg 102,15级,状态1,程序加载索引器报告,第119行[批处理起始行9] 附近的语法不正确

Msg 102,15级,状态1,过程装入索引器报告,第120行[批处理起始行9] 附近的语法不正确

当我转到第119行时,我知道代码应该是好的,因为我复制粘贴了代码,所以我决定注释掉整个块

我仍然会得到相同的错误,但是119周围的所有行实际上都被注释掉了

我该怎么解释呢

关于T-SQL报告错误的奇怪方式,有什么线索吗

我也许可以把它弄清楚,找出问题所在

这不是问题

我对行引用看起来是多么愚蠢和毫无意义感到困惑,如果有办法解决这个问题的话

下面是用[USE]语句粘贴的起始行1的完整代码:

USE [QtyCompare]
GO

/****** Object:  StoredProcedure [dbo].[LoadRecentlyIndexed]    Script Date: 10/10/2018 1:01:02 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[LoadIndexersReports] 
     @StartDate DATE, @DaysForward INT
AS
BEGIN
    SET NOCOUNT ON

    --  IF OBJECT_ID('dbo.TempRecentlyIndexedRaw'U') IS NOT NULL 
    DELETE FROM dbo.TempRecentlyIndexedRaw

    DECLARE @pLastModified DATETIME,
            @pPONO VARCHAR(50),
            @pProduct VARCHAR(100),
            @pQuantity VARCHAR(15),
            @pHeat VARCHAR(25),
            @pProduct_Description VARCHAR(250),
            @pSerial_Or_Lot VARCHAR(50),
            @pCoreData_IID_ssField14 INT,
            @pDocId INT,
            @pIndexers VARCHAR(200),
            @pAR_Alpha VARCHAR(50),
            @pValve BIT,
            @tempString VARCHAR(500),
            @pARs VARCHAR(250)   /*sorted ALPHABETICALLY, ASCENDING ... Note:  ABC234 > ABC1111, because its sorted ALPHABETICALLY */

    -- If Documents were deleted, remove them from your ocean
    DELETE IH
    FROM IndexHistory IH
    LEFT JOIN IndexedLineItems LI ON IH.Docid = LI.DocId
    WHERE LI.DocId IS NULL

    -- *************************************************************************************
    -- * B.
    -- PULL FROM RAW, CREATE TempRecentlyIndexed
    -- 
    -- *************************************************************************************

    IF OBJECT_ID('dbo.TempRecentlyIndexed', 'U') IS NOT NULL 
         DROP TABLE dbo.TempRecentlyIndexed;

    SELECT * 
    INTO TempRecentlyIndexed 
    FROM IndexHistory 
    WHERE LastModified >= @StartDate 
      AND [LastModified] <= CAST(DATEADD(dd, @DaysForward - 1, GETDATE()) AS DATE)

-- *************************************************************************************
    -- * C.  Generate your reports from TempRecentlyIndexed
    -- 
    -- 
    -- *************************************************************************************

    --lines summary
    SELECT 
        Indexers, SUM(LinesIndexed) AS [Total Lines Indexed], 
        SUM(LinesFactoringInValvesTTLHeats) AS [Total Lines Indexed Factoring In Valves (Multiple Heats)]  
    FROM
        (SELECT
             Indexers, AR_Alpha, 
             COUNT(*) AS LinesIndexed, SUM([Heat Items]) AS LinesFactoringInValvesTTLHeats 
         FROM
             (SELECT 
                  LastModified, PONO, Product, Quantity, 
                  IIF(Charindex('Valve Heats', Heat) > 0, CAST(Replace(Heat, ' Valve Heats', '') AS INT), 1) AS [Heat Items], 
                  DocId, Indexers, AR_Alpha 
              FROM
                  [dbo].[TempRecentlyIndexed] 
              WHERE
                  product IS NOT NULL) AS AAA
         GROUP BY 
             AR_Alpha, Indexers) PreviousQuery
    GROUP BY
        Indexers
    ORDER BY
        Indexers

    --documents
    Select Indexers, Count(*) as [Documents Indexed] from 
    (
    Select distinct Docid, Indexers from [dbo].[TempRecentlyIndexed] where Product is not null
    ) as AAA
    group by Indexers
    order by Indexers

    --lines detail
    select Indexers, AR_Alpha, Count(*) as [Lines Indexed], Sum([Heat Items]) as [Total Lines Indexed Factoring In Valves (Multiple Heats)] from 
    (
    SELECT LastModified, PONO, Product, Quantity, IIF(Charindex('Valve Heats',Heat)>0,Cast(Replace(Heat,' Valve Heats','') as int),1) as [Heat Items], DocId, Indexers, AR_Alpha from [dbo].[TempRecentlyIndexed] where product is not null
    ) as AAA
    group by AR_Alpha, Indexers 
    order by Indexers, AR_Alpha




-- *************************************************************************************
    -- * D.  Generate summaries for comparison with Arrivals data
    -- 
    -- 
    -- *************************************************************************************

    -- Recently Indexed Summary
--  IF OBJECT_ID('dbo.TempRecentlyIndexedSummary', 'U') IS NOT NULL 
--    DROP TABLE dbo.TempRecentlyIndexedSummary;
--
--  select LastModified, Product, sum(CASE WHEN ISNUMERIC(Quantity + 'e0') = 1 THEN CAST(Quantity AS float) ELSE 0 END) AS Quantity, Indexers, AR_Alpha, ARs
--  into TempRecentlyIndexedSummary
--  from TempRecentlyIndexed
--  where product is not null
--  Group by LastModified,Product,INdexers,AR_Alpha,ARs


-- *************************************************************************************
    -- * D2.  Load Related Records
    -- 
    -- 
    -- *************************************************************************************


    Delete from dbo.TempRelatedIndexedRaw
    Delete from dbo.TempRelatedIndexed
    SELECT distinct ARs into #ARList FROM [dbo].[IndexHistory] WHERE [LastModified] <= cast( dateadd(dd,@DaysForward-1,@StartDAte) as date) AND [LastModified] >= @StartDate)
    Select * into TempRelatedIndexed from IndexHistory left Join #ARList on IndexHistory.ARs = #ARList.ARs where Not([LastModified] <= cast( dateadd(dd,@DaysForward-1,@StartDAte) as date) AND [LastModified] >= @StartDate))



    -- Summary to include both recently indexed and related indexed
    IF OBJECT_ID('dbo.TempIndexedSummary', 'U') IS NOT NULL 
      DROP TABLE dbo.TempIndexedSummary;

    Select Product, Sum(Quantity) as Quantity, AR_Alpha, ARs into TempIndexedSummary from
    (Select * from TempRecentlyIndexedSummary
    Union All
    Select * from TempRelatedIndexedSummary) CombinedSummaries
    group by Product, AR_Alpha, ARs 


    --exec [dbo].[LoadRecentlyIndexedARSets]


    --Arrival Summary
    IF OBJECT_ID('dbo.TempArrivalSummary', 'U') IS NOT NULL 
      DROP TABLE dbo.TempArrivalSummary;

    Select AProdNo as Product, Sum(QTY) as Quantity, ARs into TempArrivalSummary from
    (
    select RA.*, ARSets.[Set] as ARs from 
    (Select * from Raw_Arrival Union All Select * from Arrivals_2017 ) RA
    left join [IndexHistoryARSets] ARSets on RA.ARsupp = ARSets.AR 
    where RA.TrueBOSTK = 'STK' and (ARSets.[Set] is not null)
    ) Arrivals
    group by AProdNo, ARs


    -- *************************************************************************************
    -- * E.  Generate DISCREPENCY report based on summary
    -- 
    -- 
    -- *************************************************************************************

    --Generate Discrepency Report
    select Coalesce(TAS.Product,'<No Data>') as Arrival_Product, Coalesce(TAS.ARs,'<No Data>') Arrival_ARs, Coalesce(TAS.Quantity ,0) as Arrival_Qty, Coalesce(TIS.Quantity  ,0) as Indexed_Qty, Coalesce(TIS.Product   ,'<No Data>') as Ndx_Product, Coalesce(TIS.ARs ,'<No Data>') as Ndx_ARs,
    Coalesce((Select top 1 Indexers from TempRecentlyIndexed TRI where TRI.ARs = TIS.ARs), '<No Data>')
    from
    TempArrivalSummary TAS FULL OUTER JOIN TempIndexedSummary TIS
    on TAS.Product = TIS.Product and TAS.ARs = TIS.ARs


    -- *************************************************************************************
    -- * E.  Generate Pivot table data
    -- 
    -- 
    -- *************************************************************************************

    --THIS IS YOUR PIVOT SET FOR HARSHAL
    Select PivotMain.*, Coalesce(PivotAdditional.Country,'Unknown') as Country, Coalesce(PivotAdditional.[Assigned Indexer], 'Undefined') as [Assigned Indexer], Replace(Coalesce(PivotAdditional.Automated,''),'X','YES') as Automated, Coalesce(PivotAdditional.Domestic,'') as Domestic, PivotAdditional.[Line Items Recieved To Date] as [Relative Volume] from
    (Select Indexers, 1 as Lines, iif(Charindex('Valve Heats', Coalesce(Heat,''), 0)>0,Cast(RTrim(LTrim(Replace(Heat,'Valve Heats',''))) as int),1) as [Lines Factoring In Valves], Docid, LastModified, AR_Alpha as Supplier, iif(Charindex('.', AR_Alpha)=2,RIGHT(ar_ALPHA,LEN(ar_aLPHA)-2),AR_Alpha) as Suffix, ARs from [dbo].[TempRecentlyIndexed]) PivotMain
    left join Suffix PivotAdditional on (PivotMain.Supplier = PivotAdditional.Supplier and PivotMain.Suffix = PivotAdditional.Suffix)



End
GO

错误中的行号在SSMS查询窗口和SQL解释器报告之间经常不匹配。解释器报告与批处理中执行的语句相关的行号。如果您有多个批次(通常由GO分隔,如您所做的),则异常中的行号将与查询窗口中显示的行号不同

在SSMS中,您可以双击结果窗格中的错误消息,SSMS会将光标放在导致错误的语句上

在您的示例中,引发错误的行是: 从[dbo].[IndexHistory]中选择不同的ARs到ARList,其中[LastModified]=@StartDate


这句话有一个太多的。删除末尾的一个以修复该行中的语法。还要注意,下一个语句也有同样的问题。您需要修复这两条语句。

错误中的行号在SSMS查询窗口和SQL解释器报告之间经常不匹配。解释器报告与批处理中执行的语句相关的行号。如果您有多个批次(通常由GO分隔,如您所做的),则异常中的行号将与查询窗口中显示的行号不同

在SSMS中,您可以双击结果窗格中的错误消息,SSMS会将光标放在导致错误的语句上

在您的示例中,引发错误的行是: 从[dbo].[IndexHistory]中选择不同的ARs到ARList,其中[LastModified]=@StartDate


这句话有一个太多的。删除末尾的一个以修复该行中的语法。还要注意,下一个语句也有同样的问题。您需要修复这两条语句。

当我们有很多代码时,可能在这些情况下会出现sintax错误

获取错误的更简单的方法是双击错误,SQL管理会将您带到您必须检查的行,而不管行号如何


当我们有很多代码时,可能在这些情况下会出现sintax错误

获取错误的更简单的方法是双击错误,SQL管理会将您带到您必须检查的行,而不管行号如何


因此,需要明确的是,您并不是在问如何修复代码,而是为什么会出现错误消息,以及如何获得更有意义的错误消息?。如果是这样的话,我不认为这是我们能回答的问题。是的,这很常见。我总是碰到它。我只是想知道是否有人对此有所了解。我会等待,看看有没有经验丰富的人能回答这个问题。我认为它有一些价值。如果没有答案,你可以删除帖子,如果你喜欢的话。这是一个写得很好的问题;我只是觉得另一个回答了。尽管斯奎尔曼下面的提示很好。你希望我们倒计时119行?所以,为了清楚起见,你不是在问如何修复代码,而是为什么错误消息是这样的,以及如何获得更有意义的消息?。如果是这样的话,我不认为这是我们能回答的问题。是的,这很常见。我总是碰到它。我只是想知道是否有人对此有所了解。我会等待,看看有没有经验丰富的人能回答这个问题。我认为它有一些价值。如果没有答案,你可以删除帖子,如果你喜欢的话。这是一个写得很好的问题;我只是觉得另一个回答了。虽然斯奎尔曼下面的提示很好。你希望我们倒数119行吗?与上面的观点相同,但说明得很好,并且很快脱颖而出。thx.与上述观点相同,但说明得很好,并且很快脱颖而出。谢谢。