sql - 如何根据存储过程中的 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
IF @cName IS NULL 则不要附加该部分!
我尝试将参数声明为:
DECLARE @mainQ VARCHAR(MAX)
然后我正在做类似的事情:
SET @mainQ = 'The select statement as specified above in the stored procedure'
然后附加部分:
IF @cName IS NOT NULL
SET @mainQ = @mainQ + ' ORDER BY ID DESC'
END (END statement of stored procedure)
任何人都可以帮助我解决以下情况,如何根据 if else 条件将部分附加到原始查询?
请注意,存储过程可能包含多个 if 语句!
解决方案
如果您只想添加到 order by 子句,那么您可以使用类似 -
ORDER BY
CASE WHEN @cName IS NOT NULL
THEN ID
END DESC
推荐阅读
- python - Keras 和 OpenCV (CV2) 作为 Python 可执行文件的依赖项?
- docker - kafka_connect 没有找到它的连接器
- python - 即使不应该有语法错误 (.configure()) 的语法错误
- c# - 在 AzureDataFactory 管道中创建 LinkedServe 时,自托管集成运行时不可用
- angular - 如何在 Firestore Angular7 中使用 orderBy 和 snapshotChanges()
- javascript - ngRequired 未在表单字段上设置 $error 属性
- xml - sed 在提到开始和结束模式时删除多行
- android - 检测何时达到 TVertScrollBox 底部然后执行一些程序
- apache-kafka - Kafka Streams:在标点函数中生成的消息的 Exactly-once 语义
- c++ - findChessboardCorners() 无法检测背光条件下的角点