C# 查询Oracle数据库通过Parameter传递参数的问题

2025-01-05 11:52:45
推荐回答(3个)
回答(1):

这样写:
string strSql=string.format( "select * from TableName where NationNal in ({0})","'白族','土家族','傣族'");
DbDataReader reader = command.ExecuteReader()

回答(2):

把白前面的(号,和族后面的)去掉试一试

回答(3):

//注意:以下方法使用的是oracle的ODP.NET,如果是微软自带的控件语法可能会有区别
//利用SQL语句将参数转化为数据库内的查询结果,注意:1的位置
string cmdText = "select * from TableName where NationNal in (SELECT trim(regexp_substr(str, '[^,]+', 1, level)) strRows FROM (SELECT :1 as str from dual) t CONNECT BY instr(str, ',', 1, level - 1) > 0) ";
//定义参数内容,如果是数组,可用for循环拼接成一个参数,最后传参时用TrimEnd将最后一个“,”去掉
string AWBNOSTR = "白族,土家族,傣族"
//将内容写入参数
OracleParameter[] cmdParms = { new OracleParameter(":1", OracleDbType.Varchar2, AWBNOSTR.TrimEnd(','), ParameterDirection.Input) };
//此处根据自己封装的方法名传参
return OraDB.ExecuteDataTable(cmdText, connstr, cmdParms);