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

标签 mysql database stored-procedures where-clause

如何在存储过程的where子句中追加SQL查询???

在存储过程中,我定义了 1 个参数 @ViewType,它接受 3 个值“已上传”、“未上传”和“全部”中的 1 个。根据 ViewType 的值,条件应用于 where caluse(下面查询中的 FileType)。

一些选择查询

-> if(@ViewType = '已上传')

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

-> if(@ViewType = '未上传')

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

-> if(@ViewType = 'ALL')

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

最佳答案

您可以将此逻辑重构为单个 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

关于mysql - 如何在 SQL 存储过程中追加查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55644845/

相关文章:

sql-server-2008 - 使用 SQL 存储过程将我的 GUID 选择到变量中?

MySQL 游标循环即使对于最简单的查询也不会返回任何内容

mysql - 表列合并查询

php - 从用户代理中提取浏览器元素

mysql - SQL Like 运算符

mysql - 可以在数据库中存储两次值吗?

mysql - 存储过程在 MySql 中无法正常工作?

php - Laravel - 从数据库生成 CSS

database - Postgres : Surprising performance on updates using cursor

java - 小型 Java 应用程序的数据库建议