我有一个嵌套的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
答案 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 ...