|
|

可以查询出多张表,方法如下:
- /// <summary>
- /// oracle多表查询
- /// </summary>
- /// <param name="dic"></param>
- /// <returns></returns>
- public static DataSet GetClient(Dictionary<string,OracleParameter[]> dic)
- {
- try
- {
- DataSet dsall = new DataSet();
- using (OracleConnection conn = new OracleConnection(constr))
- {
- conn.Open();
- foreach (var _sql in dic)
- {
- DataSet ds = new DataSet();
- OracleCommand cmd = new OracleCommand(_sql.Key, conn);
- OracleDataAdapter sda = new OracleDataAdapter();
- sda.SelectCommand = cmd;
- foreach (var par in _sql.Value)
- {
- cmd.Parameters.Add(par);
- }
- sda.Fill(ds);
- ds.Tables[0].TableName = Guid.NewGuid().ToString();
- dsall.Tables.Add(ds.Tables[0].Copy());
- }
- return dsall;
- }
- }
- catch { return null; }
- }
复制代码
执行如下:
- string sql1 = "select temp.* FROM (SELECT t.*,row_number() over(ORDER BY bh)AS num FROM V_YC_MYHXX t WHERE t.rqblx = :rqblx) temp WHERE NUM BETWEEN :startid AND :endid";
- OracleParameter[] parameters1 = {
- new OracleParameter(":rqblx", OracleDbType.NVarchar2, 50),
- new OracleParameter(":startid", OracleDbType.Int32),
- new OracleParameter(":endid", OracleDbType.Int32)
- };
- parameters1[0].Value = "上海xx";
- parameters1[1].Value = 1;
- parameters1[2].Value = 5;
- string sql2 = "select count(0) FROM V_YC_MYHXX where rqblx = :rqblx";
- OracleParameter[] parameters2 = {
- new OracleParameter(":rqblx", OracleDbType.NVarchar2, 50)
- };
- parameters2[0].Value = "上海xx";
- Dictionary<string, OracleParameter[]> dic = new Dictionary<string, OracleParameter[]>();
- dic.Add(sql1, parameters1);
- dic.Add(sql2, parameters2);
- Tools.OracleHelper.GetClient(dic);
复制代码
通用的方法如下:
|
上一篇:c#使用Oracle数据库执行多条查询语句,非存储过程方法下一篇:webapi 无法将多个参数(sb和sb1)绑定到请求的内容
|