那位高手知道,C#访问oracle数据库怎么样进行in参数化查询?网上查找了很久,没有找到相关资料。谢谢。
sqlserver是
string sql = “EXEC(“select UserRoleName from UserRole(nolock) where UserRoleId in(“+@UserRoleId+”)”)”;
sqlserver是
string sql = “EXEC(“select UserRoleName from UserRole(nolock) where UserRoleId in(“+@UserRoleId+”)”)”;
解决方案
30
oracle用的是冒号,没错呀
10
假如
select UserRoleName from UserRole where UserRoleId in(“||:UserRoleId||”)
参数化的值是1,2,3
结果是
select UserRoleName from UserRole where UserRoleId in(“1,2,3‘)
这显然是不对的
但,参数化的值是1″,”2”,”3 的话
就应该得
select UserRoleName from UserRole where UserRoleId in(“1″,”2”,”3‘)
这样就对了
你可以试试
select UserRoleName from UserRole where UserRoleId in(“||:UserRoleId||”)
参数化的值是1,2,3
结果是
select UserRoleName from UserRole where UserRoleId in(“1,2,3‘)
这显然是不对的
但,参数化的值是1″,”2”,”3 的话
就应该得
select UserRoleName from UserRole where UserRoleId in(“1″,”2”,”3‘)
这样就对了
你可以试试
50
1、where UserRoleId = 1 和 where UserRoleId = “1” 是一样的
为防止 SQL 攻击,也是建议在 SQL 指令中对数值量加引号
2、数据库里面保存的是整形的值拼接的字符串 是什么意思?
3、对于 s = “1,2,3”;
s = string.Join(“”,””, s.Split(“,”));
就变成 s = “1”,”2″,”3″ 了,没有什么难度
为防止 SQL 攻击,也是建议在 SQL 指令中对数值量加引号
2、数据库里面保存的是整形的值拼接的字符串 是什么意思?
3、对于 s = “1,2,3”;
s = string.Join(“”,””, s.Split(“,”));
就变成 s = “1”,”2″,”3″ 了,没有什么难度
110
http://stackoverflow.com/questions/1625649/oracle-parameters-with-in-statement
http://stackoverflow.com/questions/541466/oracleparameter-and-in-clause
https://community.oracle.com/message/3436511
看着都不爽