如何根据存储过程中的其他条件将零件追加到查询中

时间:2018-07-13 10:07:16

标签: sql sql-server stored-procedures

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

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 @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 母鸡的附加部分:

IF @cName IS NOT NULL
    SET @mainQ = @mainQ + ' ORDER BY ID DESC'

END (END statement of stored procedure)

有人可以在以下情况下为我提供帮助吗,如何根据其他条件将零件追加到原始查询中?

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

1 个答案:

答案 0 :(得分:1)

如果您只想添加到order by子句,则可以使用-

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