0

考虑下表:

myID    theirID    data
----    -------    ----
1       1          100
2       3          110
3       89         200
4       null       300
5       56         210

出于示例目的,这非常简化,但我有一个类似这样的 proc 作为报告的数据源:

SELECT myId, data
FROM myTable

但是,在该 proc 运行之前,我想运行相同的 proc 来检查空数据,如下所示:

SELECT myId, data
FROM myTable
WHERE theirId IS NULL

现在,与我的示例不同,我的实际过程很复杂,我不想复制它。相反,我想要一个显示违规数据的参数。所以我的问题是 - 我怎样才能构建这样的东西:

create proc myProc (checkForBadData bit)
begin
    SELECT myId, data
    FROM myTable
    "but if checkForBadData = 1 then include 'WHERE theirId IS NULL'"
end

我可以在最后只插入一点点动态SQL,还是必须污染整个东西?

谢谢!

4

1 回答 1

1

将其添加到您的 where 子句中,您不需要任何动态 sql。

create proc myProc (checkForBadData bit)
begin
    SELECT myId, data
    FROM myTable
    WHERE checkForBadData = 0 or theirId IS NULL
end
于 2013-07-04T04:51:01.260 回答