如何在SQL存储过程中追加查询

问题描述 投票:0回答:1

如何在存储过程的子句的位置附加SQL查询???

IN存储过程我已经定义了1个参数@ViewType,它接受3个值中的1个'Uploaded','Not Uploaded'和'ALL'。根据ViewType的值,条件应用于caluse(下面的查询中的FileType)。

一些选择查询

- > if(@ViewType ='Uploaded')

WHERE Con​​tractNumber = 1234 AND DocumentType ='VendorContract'AND ID = 54 AND FileType IS NOT NULL

- > if(@ViewType ='Not Uploaded')

WHERE Con​​tractNumber = 1234 AND DocumentType ='VendorContract'AND ID = 54 AND FileType IS NULL

- > if(@ViewType ='ALL')

WHERE Con​​tractNumber = 1234 AND DocumentType ='VendorContract'AND ID = 54

mysql database stored-procedures where-clause
1个回答
1
投票

您可以将此逻辑重构为单个WHERE子句:

WHERE
    (        
        (@ViewType = 'Uploaded' AND FileType IS NOT NULL) OR
        (@ViewType = 'Not Uploaded' AND FileType IS NULL) OR
        @ViewType = 'ALL'
    ) AND
    ContractNumber = 1234 AND DocumentType = 'VendorContract' AND ID = 54
© www.soinside.com 2019 - 2024. All rights reserved.