0

この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 )
4

1 に答える 1

0

不明な数の条件を処理する一般的な方法は、id が null 不可であることがわかっている場合WHERE 1=1など、最初の条件または何かを無害にすることです。WHERE id IS NOT NULL

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 )
于 2012-10-17T08:18:19.157 に答える