如何根据存储过程中的if-else条件将零件附加到查询中



我要实现的是将字符串附加到现有变量中,例如:

string abc = "good";
abc += "afternoon";

以便最终输出为"下午好">

我已经编写了以下存储过程:

CREATE OR ALTER PROCEDURE [dbo].[sp_getPropertyContactUsDetails]
(@isDeleted CHAR(1), 
@cName VARCHAR(MAX)) 
AS
BEGIN
SET NOCOUNT ON;
--DECLARE @mainQ varchar(max)
SELECT 
pcd.col1, pcd.col2,.....
CASE
WHEN pcd.col1 = 'abc'
THEN (SELECT pname FROM tbl_pd1 WHERE id = pcd.id)
WHEN pcd.col2 = 'def'
THEN (SELECT pname FROM tbl_pd2 WHERE id = pcd.id)
END AS 'pname',
FROM  
tbl_pcd pcd 
WHERE 
pcd.isDeleted = @isDeleted

现在,我想根据if-else条件将一个部分附加到查询中,如下所示:

IF @cName IS NOT NULL
THEN 

将以下部分附加到选择查询:

ORDER BY ID DESC 

如果@cName为NULL,则不要附加该部分!

我尝试过将参数声明为:

DECLARE @mainQ VARCHAR(MAX)

然后我在做一些类似的事情:

SET @mainQ = 'The select statement as specified above in the stored procedure'

T附加部分的hen:

IF @cName IS NOT NULL
SET @mainQ = @mainQ + ' ORDER BY ID DESC'
END (END statement of stored procedure)

有人能帮我解决以下情况吗?如何根据if-else条件将零件附加到原始查询中??

请注意,存储过程可能包含多个if语句!

如果你只想通过子句添加到订单中,那么你可以使用类似于-的东西

ORDER BY
CASE WHEN @cName IS NOT NULL 
THEN ID 
END DESC

最新更新