2013-01-08 35 views
2

我改變一個存儲過程,當我嘗試excecute,我得到:有語法錯誤,但是行有沒有「爲」

Msg 156, Level 15, State 1, Procedure vtg_asmbltimephasedashassy, Line 20 
Incorrect syntax near the keyword 'AS' 

但是,當我去到第20行,沒有關鍵字'as',也不在第20行之前或之後的行中。也許我正在計算錯誤的行數。

當我數到第20行,我得到讀取的行

jobmtl.partnum=partwhse.partnum FULL OUTER JOIN 

任何人都可以點我在正確的方向是什麼,我需要做來解決問題?我的存儲過程如下。

USE [mfgsys803] 
GO 
/****** Object: StoredProcedure [dbo].[vtg_asmbltimephasedashassy] Script Date: 01/08/2013 12:59:18 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER proc [dbo].[vtg_asmbltimephasedashassy] @p_plant varchar(max) 
as 
begin 
set nocount on; 

SELECT  jobhead.jobnum, sum(partwhse.onhandqty) as 'onhandqty', jobhead.partnum, jobhead.revisionnum, jobhead.prodqty, jobhead.startdate, jobhead.duedate, jobhead.reqduedate, 
        jobhead.commenttext, jobmtl.issuedcomplete, jobmtl.issuedqty, jobmtl.mtlseq, jobmtl.partnum AS 'mtlpart', jobmtl.requiredqty, jobmtl.qtyper, jobmtl.reqdate, 
        partwhse.warehousecode, prodgrup.description 
FROM   jobmtl LEFT OUTER JOIN 
        partwhse INNER JOIN 
        warehse ON partwhse.company = warehse.company AND partwhse.warehousecode = warehse.warehousecode ON jobmtl.company = partwhse.company AND 
        jobmtl.partnum = partwhse.partnum FULL OUTER JOIN 
        prodgrup INNER JOIN 
        jobhead ON prodgrup.company = jobhead.company AND prodgrup.prodcode = jobhead.prodcode ON jobmtl.company = jobhead.company AND 
        jobmtl.jobnum = jobhead.jobnum 
WHERE  (jobhead.jobreleased = 0) AND (jobhead.jobfirm = 1) AND (jobhead.jobengineered = 1) AND (jobhead.company = 'lot') and (prodgrup.description like '%assy%') and ([email protected]_plant) and ([email protected]_plant) 

group by  jobhead.jobnum, jobhead.partnum, jobhead.revisionnum, jobhead.prodqty, jobhead.startdate, jobhead.duedate, jobhead.reqduedate, 
        jobhead.commenttext, jobmtl.issuedcomplete, jobmtl.issuedqty, jobmtl.mtlseq, jobmtl.partnum AS 'mtlpart', jobmtl.requiredqty, jobmtl.qtyper, jobmtl.reqdate, 
        partwhse.warehousecode, prodgrup.description 


end 
+0

在SQL Server中,錯誤報告在*語句*開始的行。因此,如果以某種方式創建了一條跨越1000行的單個語句,並且最後一行出現錯誤,則會在第一行報告錯誤。 –

+0

@Damien_The_Unbeliever - 解析錯誤不適用。它是「GO」後面的第20行,因此在提交的批次中是第20行。 '@ Jennifer'雙擊錯誤信息會將您帶到違規行。 –

+0

@MartinSmith - 批處理中第1000行出現錯誤,批處理中從第1行開始的語句將在第1行報告爲錯誤。我試圖做的一點是,僅僅依靠報告的行號不幫助定位錯誤的人。 –

回答

3

藉此部分從小組由

jobmtl.partnum AS 'mtlpart' 

使其

jobmtl.partnum 
+0

完美謝謝!只要它能讓我把它標記爲答案。 – jenhil34

0

行號只是rtefers含有錯誤的SQL語句的行號...這是整個Select語句。由於在集團在jobmtl.partnum AS 'mtlpart',,需要出來。