2012-10-17 175 views
0

我該如何讓這個If語句跳到下面的if語句?然後,我嘗試了其他方法,但它不起作用。無論輸入是否傳入變量,我都希望它顯示。如何讓這個IF語句跳到另一個語句?

declare @sql varchar(8000) 
declare @sql_where varchar(8000) 

declare @ww varchar(10) 
declare @plant varchar(10) 
declare @plnr_id varchar(10) 

set @plant = 'CS58' 
set @ww = '201240' 
set @plnr_id = 'G37' 

set @sql_where = 'where' 
set @sql = 'select * from rout_sub_doi ' 

if len(@plant) > 0 
    set @sql_where = @sql_where + ' plant = ''' + @plant + ''' ' 

if len(@ww) > 0 
    set @sql_where = @sql_where + 'AND sys_intel_ww = ''' + @ww + ''' ' 

if len(@plnr_id) > 0 

    set @sql_where = @sql_where + ' AND plnr_id = ''' + @plnr_id + ''' ' 


print @sql 
print @sql_where 

exec (@sql + @sql_where) 
+0

也許可以添加一條評論或其他指標,說明您正在談論的哪個if語句? –

+0

另外,嘗試'set @sql_where ='where 1 = 1'' - 然後你所有的'if's可以添加''AND ...''並且在語法上是正確的。 –

+0

使問題清楚,請...如果如果你想跳過它? –

回答

0

處理未知數量的條件的常用方法是使第一個WHERE 1=1或良性的東西,如WHERE id IS NOT NULL當ID被稱爲是不是空的。

declare @sql varchar(8000) 
declare @sql_where varchar(8000) 

declare @ww varchar(10) 
declare @plant varchar(10) 
declare @plnr_id varchar(10) 

set @plant = 'CS58' 
set @ww = '201240' 
set @plnr_id = 'G37' 

set @sql_where = '' 
set @sql = 'select * from rout_sub_doi where 1=1 ' 

if len(@plant) > 0 
    set @sql_where = @sql_where + 'AND plant = ''' + @plant + ''' ' 

if len(@ww) > 0 
    set @sql_where = @sql_where + 'AND sys_intel_ww = ''' + @ww + ''' ' 

if len(@plnr_id) > 0 
    set @sql_where = @sql_where + 'AND plnr_id = ''' + @plnr_id + ''' ' 

print @sql 
print @sql_where 

exec (@sql + @sql_where) 
+0

哇......這麼簡單..感謝很多 – user1749277