string sql = "delete from tableName where ID in :ID ";
paramers.Add( new System.Data.OracleClient.OracleParamet ("ID","('1','2','3')"));
是这样子写吗?

解决方案 »

  1.   

    to string sql = "delete from tableName where ID in :ID ";
    paramers.Add( new System.Data.OracleClient.OracleParamet ("ID","('1','2','3')"));
    是这样子写吗?不行,参数不会当作集合被处理
      

  2.   

    如下提供sql server方法,你自己做转换:
    建立存储过程,把IN的条件作为参数传进行,然后在存储中转换成字符,最后调用exec来执行,例如:
    @InString varchar(30) --Parameters
    --Stored Procedure 
    Declare @Query varchar(1024)
    SET @Query = 'delete from tableName where ID in ' + @InString
    Exec( @Query )// CS file
    // Add parameter with value like ""('1','2','3')""
      

  3.   

    Oralce怎么弄下?有例子吗?
    谢谢!
      

  4.   

    我觉得关于这个OracleParameter可以开一节知识讲解的!
    好久不上CSDN了,Knight94(愚翁) 不知道是哪位高手?
      

  5.   

    to Oralce怎么弄下?有例子吗?
    不用存储过程可以吗?谢谢如果用参数的话,直接用command操作是不行的,需要进行转换,即我所说的存储过程。否则你自己拼接字符串,来取代参数。
      

  6.   

    就是说In这个关键字不能用于command操作对吗?
    我自己拼字符串?是像Like一样那样拚吗?
      

  7.   

    to 就是说In这个关键字不能用于command操作对吗?
    我自己拼字符串?是像Like一样那样拚吗?不是这个意思
    你用参数传递进去,在sql端并不把传进去的参数做成字符进行处理,而是当成参数值处理。即
    数据库服务器端识别的是
    delete from tableName where ID in :ID 
    而不是
    delete from tableName where ID in ('1','2','3')服务器端不会做转换处理,所以要你自己去做转换。