我们在C#使用MS Sql Server数据库时执行多条SQL查询的方法:
select * from table1;
select * from table2;
这样写起来非常方便,可是在Oracle中这样写是不行的。
C#访问Oracle数据库执行多条查询语句的方法:
需添加引用:Oracle.DataAccess.Client,该DLL可以到Oracle官网下载。
建议把OraOps11w.dll和Oracle.DataAccess.dll这2个文件放到程序启动目录下,一定要保证这2个文件的版本一致。
以下是核心代码:
public static DataSet Query(List<string> listSelectSql)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
OracleCommand cmd = new OracleCommand();
StringBuilder strSql = new StringBuilder();
strSql.Append("begin ");
for (int i = 0; i < listSelectSql.Count; i++)
{
string paraName = "p_cursor_" + i;
strSql.AppendFormat("open :{0} for {1}; ", paraName, listSelectSql[i]);
cmd.Parameters.Add(paraName, OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);
}
strSql.Append("end;");
cmd.Connection = connection;
cmd.CommandText = strSql.ToString();
OracleDataAdapter da = new OracleDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds);
}
catch (OracleException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}