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 ‘  ’这里面的语句,所有的单引号都要变成两个单引号。
  • 相关阅读:
    win10自带邮箱应用无法查看qq邮箱应用解决办法
    Ubuntu紫色背景颜色代码
    VMware中对Linux虚拟机的网络配置静态IP的配置
    CentOS 7在VMware 12中共享文件看不见的问题?
    C++中让人忽视的左值和右值
    C++ allocator类学习理解
    C++11新特性 -----> 右值引用 &&
    重新认识new
    关于C++中nothrow的某某某
    stopPropagation, preventDefault 和 return false 的区别
  • 原文地址:https://www.cnblogs.com/zcwry/p/net_oracle.html
Copyright © 2011-2022 走看看