string sql = "delete from tableName where ID in :ID ";
paramers.Add( new System.Data.OracleClient.OracleParamet ("ID","('1','2','3')"));
是这样子写吗?
paramers.Add( new System.Data.OracleClient.OracleParamet ("ID","('1','2','3')"));
是这样子写吗?
paramers.Add( new System.Data.OracleClient.OracleParamet ("ID","('1','2','3')"));
是这样子写吗?不行,参数不会当作集合被处理
建立存储过程,把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')""
谢谢!
好久不上CSDN了,Knight94(愚翁) 不知道是哪位高手?
不用存储过程可以吗?谢谢如果用参数的话,直接用command操作是不行的,需要进行转换,即我所说的存储过程。否则你自己拼接字符串,来取代参数。
我自己拼字符串?是像Like一样那样拚吗?
我自己拼字符串?是像Like一样那样拚吗?不是这个意思
你用参数传递进去,在sql端并不把传进去的参数做成字符进行处理,而是当成参数值处理。即
数据库服务器端识别的是
delete from tableName where ID in :ID
而不是
delete from tableName where ID in ('1','2','3')服务器端不会做转换处理,所以要你自己去做转换。