2011-03-25 84 views
0

在如果它炸弹或总是一些错误 - 任何帮助将非常感激。SQL Server 2000存储过程没有明显的原因

CREATE PROCEDURE sp_LetsWork 
    (@MYID int, @ThisDate Datetime) 
AS 
    SET NOCOUNT ON 

    DECLARE @intErrorCode int, 
      @QStartDate datetime, 
      @QEndDate datetime 

    SELECT @intErrorCode = @@ERROR 

    --DATEPART(mm, @ThisDate) BETWEEN 1 and 3 -- test both options 
    BEGIN 
    IF @ThisDate BETWEEN '01/01/' + CONVERT(VARCHAR(4), YEAR(@ThisDate)) 
         AND '03/31/' + CONVERT(VARCHAR(4), YEAR(@ThisDate)) 
    RunQuarter: 
     SELECT * 
     FROM qryAR 
     WHERE CID = @MYID 
      AND (paiddate >= @QStartDate 
      AND paiddate <= @QEndDate) 
     --ORDER BY paiddate ASC 

     GO 
     -- GOTO RunQuarter 
    END 
    GO 

    SELECT @intErrorCode = @@ERROR 

    IF (@intErrorCode <> 0) GOTO ErrHandler 

    RETURN 0 

ErrHandler: 

    RETURN @intErrorCode 

GO 
+2

老兄,你必须给我们个错误,如果你真的希望帮助... – 2011-03-25 17:13:20

+0

如果导致错误? – Beth 2011-03-25 17:14:52

+0

错误170:第35行;错误的语法附近) – Kris 2011-03-25 17:23:08

回答

7

在存储过程中您有一个GO中途。

GO不是SQL:它告诉客户端工具,如SSMS其中一个批次结束

因此错误是paiddate <[email protected]),因为这是因为GO的存储过程的末尾:没有匹配END为这

以上BEGIN这不是在执行“轰炸”,因为不被创建它...

+0

感谢愚蠢的错误。已经很长时间了。 – Kris 2011-03-25 18:13:01

+0

@Kris:如果这解决了您的问题,并且您对答案满意,请投票和/或接受使用箭头并在左侧打勾。钽 – gbn 2011-03-25 20:05:15