2013-07-04 103 views
0

考慮見下表:插入WHERE子句的SQL Proc參數?

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

這是爲了舉例的目的很簡單,但我有一個進程就是這樣成爲報表中的數據源:

SELECT myId, data 
FROM myTable 

是PROC運行之前不過,我想運行相同的PROC檢查空數據是這樣的:現在

SELECT myId, data 
FROM myTable 
WHERE theirId IS NULL 

,不像我的例子,我的實際PROC是複雜的,我不想複製它。相反,我想要一個顯示違規數據的參數。所以我的問題是這樣的 - 我怎麼能建立這樣的事情:

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

我可以插入在最後只有一個動態SQL的一點,還是我有污染整個事情?

謝謝!

+1

*** *** SQL恰好在*結構化查詢語言* - 許多數據庫系統中使用的語言,但沒有AA數據庫產品......很多事情都是特定於供應商 - 所以我們真的需要知道你正在使用什麼**數據庫系統**(以及哪個版本)(請相應地更新標籤).... –

回答

1

將它添加到你的where子句中,並且你不應該需要任何動態sql。

create proc myProc (checkForBadData bit) 
begin 
    SELECT myId, data 
    FROM myTable 
    WHERE checkForBadData = 0 or theirId IS NULL 
end 
+0

完美。我以前多次使用這種方法 - brainfart。 – Warren