zoukankan      html  css  js  c++  java
  • oracle 多条语句同时执行(比如返回两个dataset)

    public DataSet GetQualityStatistics(DateTime start_date,DateTime  end_date,string modality,string hospital_id)
            {
                StringBuilder sql = new StringBuilder();
                List<DbParameter> paras = new List<DbParameter>();
               
                IDBHelper dbhelper = DBFactory.createDBHleper();
                DataSet ds = new DataSet();
                switch (sqlType)
                {
                    case "MSSQL2008":
    
                       
                        break;
                    case "Oracle":
                      
                        sql.Append(" begin ");
                        //科室内图像质量评价
                        sql.Append(@" open  :var_1 for 'SELECT COUNT(*)NUM, NVL(B.Dept_image_quality,2)QUALITY,to_char(A.REGISTRATION_DATE,''mm'') MONTH FROM PATIENT_REGISTRATION A  
      LEFT JOIN QUALITY_EVALUATION B  ON A.REGISTRATION_ID=B.REG_ID WHERE to_char(A.REGISTRATION_DATE,''yyyy-MM-dd hh:mi:ss'') >=''"+start_date+"'' " )
                           .Append(@"AND to_char(A.REGISTRATION_DATE,''yyyy-MM-dd hh:mi:ss'') <=''"+end_date+"''  AND MODALITY=''"+modality+"''   AND HOSPITAL_ID=''"+hospital_id+"''  ")
                           .Append(@" GROUP BY B.Dept_image_quality,to_char(A.REGISTRATION_DATE,''mm'')   ORDER BY B.Dept_image_quality,to_char(A.REGISTRATION_DATE,''mm'')' ;
                           ");
                        //sql.Append("  ");
                        ////科室内报告质量评价
                        //sql.Append(" begin ");
                        sql.Append(@" open  :var_2 for ' SELECT COUNT(*)NUM, NVL(B.Dept_report_quality,2)QUALITY,to_char(A.REGISTRATION_DATE,''mm'') MONTH FROM PATIENT_REGISTRATION A  
      LEFT JOIN QUALITY_EVALUATION B  ON A.REGISTRATION_ID=B.REG_ID WHERE to_char(A.REGISTRATION_DATE,''yyyy-MM-dd hh:mi:ss'') >=''" +start_date+"''  ")
      
    
                         .Append("AND to_char(A.REGISTRATION_DATE,''yyyy-MM-dd hh:mi:ss'') <=''"+end_date+"''  AND MODALITY=''"+modality+"''   AND HOSPITAL_ID=''"+hospital_id+"''  ")
                         .Append(@" GROUP BY B.Dept_report_quality,to_char(A.REGISTRATION_DATE,''mm'') ORDER BY B.Dept_report_quality,to_char(A.REGISTRATION_DATE,''mm'')';  
                          ");
                        //sql.Append(" end; ");
                        ////临床对图像质量评价
                        //sql.Append(" begin ");
                        sql.Append(@" open  :var_3 for 'SELECT COUNT(*)NUM, NVL(B.Clinic_image_quality,2)QUALITY,to_char(A.REGISTRATION_DATE,''mm'') MONTH FROM PATIENT_REGISTRATION A  
      LEFT JOIN QUALITY_EVALUATION B  ON A.REGISTRATION_ID=B.REG_ID 
      WHERE to_char(A.REGISTRATION_DATE,''yyyy-MM-dd hh:mi:ss'') >=''" +start_date+"''  AND to_char(A.REGISTRATION_DATE,''yyyy-MM-dd hh:mi:ss'') <=''"+end_date+"'' AND MODALITY=''"+modality+"'' AND HOSPITAL_ID=''"+hospital_id+"'' ")
    
                         .Append(@"  GROUP BY B.Clinic_image_quality,to_char(A.REGISTRATION_DATE,''mm'') ORDER BY B.Clinic_image_quality,to_char(A.REGISTRATION_DATE,''mm'')'; 
                          ");
                        //sql.Append(" end; ");
                        ////临床对报告质量评价
                        //sql.Append(" begin ");
                        sql.Append(@" open  :var_4 for 'SELECT COUNT(*)NUM, NVL(B.Clinic_report_quality,2)QUALITY,to_char(A.REGISTRATION_DATE,''mm'') MONTH FROM PATIENT_REGISTRATION A  
      LEFT JOIN QUALITY_EVALUATION B  ON A.REGISTRATION_ID=B.REG_ID 
      WHERE to_char(A.REGISTRATION_DATE,''yyyy-MM-dd hh:mi:ss'') >=''" +start_date+"''  AND to_char(A.REGISTRATION_DATE,''yyyy-MM-dd hh:mi:ss'') <=''"+end_date+"'' AND MODALITY=''"+modality+"'' AND HOSPITAL_ID=''"+hospital_id+"'' ")
                
    
                         .Append(" GROUP BY B.Clinic_report_quality,to_char(A.REGISTRATION_DATE,''mm'') ORDER BY B.Clinic_report_quality,to_char(A.REGISTRATION_DATE,''mm'')';   ");
                        sql.Append(" end; ");
                        var p = new OracleParameter(":var_1", OracleDbType.RefCursor);
                        p.Direction = ParameterDirection.Output;
                        paras.Add(p);
                        var p2=new OracleParameter(":var_2", OracleDbType.RefCursor);
                        p2.Direction = ParameterDirection.Output;
                        paras.Add(p2);
                        var p3=new OracleParameter(":var_3", OracleDbType.RefCursor);
                        p3.Direction = ParameterDirection.Output;
                        paras.Add(p3);
                        var p4=new OracleParameter(":var_4", OracleDbType.RefCursor);
                        p4.Direction = ParameterDirection.Output;
                        paras.Add(p4);
                        ds = dbhelper.Query(sql.ToString(),paras);
    
                        break;
                    default: break;
                }
                
               
                return ds;
            }
    以上代码返回的是4个dataset。
    贴别注意,open  :var_1 for ‘  ’这里面的语句,所有的单引号都要变成两个单引号。
  • 相关阅读:
    聊聊Flame Graph(火焰图)的那些事
    Dynamometer:HDFS性能扩展测试工具
    论分布式系统中单一锁控制的优化
    聊聊磁盘数据的损坏
    分级副本存储:一种更具效益成本的数据容错策略
    分布式存储系统中的Data Scrubbing机理
    论一个成熟分布式系统的工具类设计
    聊聊Raft一致性协议以及Apache Ratis
    ListenableFuture的状态同步和原子更新
    2018-9-1-win10-uwp-轻量级-MVVM-框架入门-2.1.5.3199
  • 原文地址:https://www.cnblogs.com/zcwry/p/net_oracle.html
Copyright © 2011-2022 走看看