存储过程中的语法错误不正确

时间:2013-02-12 12:06:23

标签: sql stored-procedures sql-server-2008-r2

我有一个嵌套的if语句存储过程,但它给了我错误:

  

Msg 102,Level 15,State 1,Procedure SPCRMDoctorRequestList,Line 28
  'DR'附近的语法不正确。

那是第二个if语句的其他部分

这是我的存储过程:

CREATE PROCEDURE [dbo].[SPCRMList]
@Records INT,
@Type VARCHAR(10),  /*Recent, Priority, Pending, Approved*/
@ViewType VARCHAR(10)   /*Dashboard, List*/
AS
BEGIN
SET NOCOUNT ON
IF (@Type = 'Recent')
BEGIN
    IF(@ViewType = 'Dashboard')
    BEGIN
        Select top (@Records)
        DR.Id AS Id,    /*Unique ID*/
        USERS.USERNAME AS Requester_Name,       /*Employee Name*/
        ST.ServiceName AS Service_Type_Name,    /*Nature of Service*/
        DR.Date_Created AS Date_Created    /*Created Date*/
        From [Doctor_Request] AS DR
        JOIN [ASES].[dbo].[USERS] AS USERS
        ON DR.Requester COLLATE SQL_Latin1_General_CP1_CI_AS = USERS.RID COLLATE SQL_Latin1_General_CP1_CI_AS
        JOIN [SERVICE_TYPE] AS ST
        ON DR.Service_Type_Id=ST.Id
        WHERE DR.Is_Deleted=0
        ORDER BY DR.Date_Created DESC
    END
    ELSE IF (@ViewType = 'List')
    BEGIN
        Select top (@Records)
        DR.Id AS Id,    /*Unique ID*/
        USERS.USERNAME AS Requester_Name,       /*Employee Name*/
        ST.ServiceName AS Service_Type_Name,    /*Nature of Service*/
        DR.Date_Created AS Date_Created    /*Created Date*/
            DR.State AS State /*State of Request*/
            DR.Deadline AS Deadline /*Deadline of request*/
        From [Doctor_Request] AS DR
        JOIN [USERS] AS USERS
        ON DR.Requester COLLATE SQL_Latin1_General_CP1_CI_AS = USERS.RID COLLATE SQL_Latin1_General_CP1_CI_AS
        JOIN [SERVICE_TYPE] AS ST
        ON DR.Service_Type_Id=ST.Id
        WHERE DR.Is_Deleted=0
        ORDER BY DR.Date_Created DESC
    END
END

1 个答案:

答案 0 :(得分:3)

您尚未在两个查询中定义表别名DR 。例如,它应该像

Select DR.colName, X.colName
from Table1 DR join Table2 X on DR.id = X.id
...

同样在第二个查询中,您需要在commas之后的列旁边添加Date_Created ...作为

SELECT ...
    DR.Date_Created AS Date_Created,    /*Created Date*/
    DR.State AS State, /*State of Request*/
    DR.Deadline AS Deadline /*Deadline of request*/
FROM ...