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 ‘ ’这里面的语句,所有的单引号都要变成两个单引号。
oracle 多条语句同时执行(比如返回两个dataset)的更多相关文章
- Oracle 一次执行多条语句
在.Net使用多次方法一次执行多条语句都不成功, 百度了许久才找到正确的解决方案. Oracle执行多条语句的时候 不能有物理换行 写法对比: 如下写法是不成功. begin into t_test ...
- Oracle常用函数:DateDiff() 返回两个日期之间的时间间隔自定义函数
首先在oracle中没有datediff()函数可以用以下方法在oracle中实现该函数的功能:1.利用日期间的加减运算天:ROUND(TO_NUMBER(END_DATE - START_DATE) ...
- Oracle通过JOB定时执行存储过程实现两表数据比对
需求: 第三方云平台管理的虚拟机会进行关机.资源扩展等操作,因此开关机状态.CPU.内存.磁盘大小等数据需要进行同步.这里第三方云平台是BMC CLM云平台,底层虚拟化平台是Vcenter.进行同步的 ...
- [转载]T-SQL(Oracle)语句查询执行顺序
原文链接:http://blog.sina.com.cn/s/blog_61c006ea0100mlgq.html sql语法的分析是从右到左,where子句中的条件书写顺序,基本上对sql性能没有影 ...
- Oracle sql语句执行顺序
sql语法的分析是从右到左 一.sql语句的执行步骤: 1)词法分析,词法分析阶段是编译过程的第一个阶段.这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构 ...
- Oracle数据库查看执行计划
基于ORACLE的应用系统很多性能问题,是由应用系统SQL性能低劣引起的,所以,SQL的性能优化很重要,分析与优化SQL的性能我们一般通过查看该SQL的执行计划,本文就如何看懂执行计划,以及如何通过分 ...
- 转://看懂Oracle中的执行计划
一.什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述 二.怎样查看Oracle执行计划? 2.1 explain plan for命令查看执行计划 在sq ...
- 【转】oracle定制定时执行任务
本节摘要:本节介绍使用oracle自带的job来实现oracle定制定时执行任务. 1.引言 定制定时执行的任务有两种形式,系统级别和数据库级别, 从操作系统级别来讲, windows系统我们可以使用 ...
- 基于Oracle的SQL优化(崔华著)-整理笔记-第2章“Oracle里的执行计划”
详细介绍了Oracle数据里与执行计划有关的各个方面的内容,包括执行计划的含义,加何查看执行计划,如何得到目标SQL真实的执行计划,如何查看执行计划的执行顺序,Oracle数据库里各种常见的执行计划的 ...
随机推荐
- 在MAC上搭建cordova3.4.0的IOS和android开发环境
Hello,大家好,今天给大家说说在mac上搭建cordova3.4.0的iOS和Android开发环境,首先下载cordova,地址:https://cordova.apache.org/#down ...
- C# 数据类型
1.整数类型: int 只能 存储证书,不能存储小数. 2.小数类型: doubie 机能存储整数,也能存储小数,小数点后面的额 15-16位. 3.金钱类型: decimal:用来存储金钱, ...
- Nand Flash,Nor Flash,CFI Flash,SPI Flash 之间的关系
前言: 在嵌入式开发中,如uboot的移植,kernel的移植都需要对Flash 有基本的了解.下面细说一下标题中的中Flash中的关系 一,Flash的内存存储结构 flash按照内部存 ...
- memcpy函数用法
memcpy函数用法 .分类: VC++ VC++ mfc matlab 2011-12-01 19:17 14538人阅读 评论(0) 收藏 举报 null 原型:extern void *memc ...
- Android系统文件夹组织结构
- CheckBoxList控件获取多选择,需要遍历
CheckBoxList控件获取多选择,需要遍历,环境:vs2008 在页面上添加CheckBoxList控件,输入项值 a,b,c,d.然后添加按钮 Button2确定,如何获取CheckBoxLi ...
- 2014年7月份第2周51Aspx源码发布详情
体育馆综合会员管理系统源码 2014-7-11 [VS2010]功能介绍:本系统适用于羽毛球馆,台球馆,乒乓球馆,棋牌室,篮球馆等综合体育馆,可同时使用.本系统功能非常强大,包含体育馆内餐厅,超 ...
- Django和Flask对于URL尾斜杠(back slash)的处理
最近在看Flask,其中提到了对于URL尾斜杠的处理.感觉算是一个需要注意的地方吧,就和Django的处理方式来进行一个简单的对比. 首先说下什么是尾斜杠. http://www.baidu.com/ ...
- storm 源码笔记
(reify DistributedRPC$Iface (^String execute [this ^String function ^String args] (log-debug " ...
- 10大白帽黑客专用的 Linux 操作系统
原文出处: Irshad Pathoor 译文出处:Linux中国 欢迎分享原创到伯乐头条 今天让我们来介绍十个黑客专用的操作系统,它们被白帽黑客用作渗透测试的工具.这里我把 Kali Lin ...