有如下存储过程:
CREATE PROCEDURE [ceweb].[dt_getairlineratio] @code varchar(2000)   AS 
select sum(settlementprice)  from ceweb.vw_ticketorder 
where (billcode in ((Case When @code is null Then billcode Else @code End))) 
其中@code是传入的参数,billcode字段是字符串类型的,当需要传多个值的时候,如:'abc','def'等等,这时候@code应该怎么赋值啊,我用的是java开发的,JDBC中传入"'abc','def"不行,传其它形式的也不行。

解决方案 »

  1.   

    CREATE PROCEDURE [ceweb].[dt_getairlineratio] @code varchar(2000)   AS 
    exec('select sum(settlementprice)  from ceweb.vw_ticketorder 
    where billcode in ('+isnull(@code,'')+')')
      

  2.   

    CREATE PROCEDURE [ceweb].[dt_getairlineratio] @code varchar(2000)   AS 
    if @code is null
        select sum(settlementprice)  from ceweb.vw_ticketorder 
    else
        select sum(settlementprice)  from ceweb.vw_ticketorder 
        where charindex(',' + billcode + ',',',' + @code + ',') > 0
    GO