sql 存储过程 循环使用
- USE [clab]
- GO
- /****** Object: StoredProcedure [dbo].[sp_bd_getResultByEcd] Script Date: 08/06/2014 16:47:55 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- -- =============================================
- -- Author: zhangcy
- -- Create date: 2014-07-09
- -- Description: 传入病人ID及项目代码获取项目最新的检验结果
- -- =============================================
- CREATE PROCEDURE [dbo].[sp_bd_getResultByEcd]
- (
- @pat_in_no varchar(50) --病人id
- ,@itm_id_list varchar(500) --项目编码字符串,各项目编码以,进行分割
- )
- AS
- Declare @NeedParse varchar(500) --参数 没有处理的字符串
- if (CharIndex(',', @itm_id_list)=0)
- BEGIN
- SELECT
- a.res_itm_id as 项目id
- ,a.res_id as 报告id
- ,a.res_itm_ecd as 项目代码
- ,a.res_chr as 结果
- ,a.res_date as 检测时间
- ,a.value as 提示
- from
- (SELECT row_number() over (partition by res_itm_id order by res_date DESC) as rownum
- ,pat_in_no
- ,res_id
- ,res_itm_id
- ,res_itm_ecd
- ,res_chr
- ,res_date
- ,value
- from patients with(nolock)
- left join resulto with(nolock) on patients.pat_id=resulto.res_id
- left join dict_res_ref_flag on dict_res_ref_flag.id = resulto.res_ref_flag
- where pat_in_no=@pat_in_no
- and pat_flag in (2,4)
- and res_itm_id=@itm_id_list) as a
- where a.rownum=1
- END
- else
- BEGIN
- set @NeedParse =@itm_id_list
- while (charIndex(',', @NeedParse)>0)
- begin
- SELECT
- a.res_itm_id as 项目id
- ,a.res_id as 报告id
- ,a.res_itm_ecd as 项目代码
- ,a.res_chr as 结果
- ,a.res_date as 检测时间
- ,a.value as 提示
- from
- (SELECT row_number() over (partition by res_itm_id order by res_date DESC) as rownum
- ,pat_in_no
- ,res_id
- ,res_itm_id
- ,res_itm_ecd
- ,res_chr
- ,res_date
- ,value
- from patients with(nolock)
- left join resulto with(nolock) on patients.pat_id=resulto.res_id
- left join dict_res_ref_flag on dict_res_ref_flag.id = resulto.res_ref_flag
- where pat_in_no=@pat_in_no
- and pat_flag in (2,4)
- and res_itm_id=SubString(@NeedParse,1,CharIndex(',',@NeedParse)-1)) as a
- where a.rownum=1
- set @NeedParse =SubString(@NeedParse,CharIndex(',', @NeedParse)+1,len(@NeedParse)-CharIndex(',', @NeedParse))
- end
- SELECT
- a.res_itm_id as 项目id
- ,a.res_id as 报告id
- ,a.res_itm_ecd as 项目代码
- ,a.res_chr as 结果
- ,a.res_date as 检测时间
- ,a.value as 提示
- from
- (SELECT row_number() over (partition by res_itm_id order by res_date DESC) as rownum
- ,pat_in_no
- ,res_id
- ,res_itm_id
- ,res_itm_ecd
- ,res_chr
- ,res_date
- ,value
- from patients with(nolock)
- left join resulto with(nolock) on patients.pat_id=resulto.res_id
- left join dict_res_ref_flag on dict_res_ref_flag.id = resulto.res_ref_flag
- where pat_in_no=@pat_in_no
- and pat_flag in (2,4)
- and res_itm_id=@NeedParse) as a
- where a.rownum=1
- END
- GO
此存储过程为:传入病人ID,项目编码集,其中各编码以逗号分割。
存储过程里面要做的就是循环读取项目编码集里面的单个编码,及结合病人ID获取该病人及该项目的检验结果
sql 存储过程 循环使用的更多相关文章
- sql存储过程循环实现事务
//往一张表中添加数据,获取添加数据生成的ID,再往另一张表中添加多条数据 ALTER PROCEDURE [dbo].[AttendanceCardAndDetail_Add] @SchoolID ...
- SQL存储过程+游标 循环批量()操作数据
本人收集的,挺有用的 1. 利用游标循环更新.删除MemberAccount表中的数据 DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT * FROM dbo.M ...
- sql存储过程中循环批量插入
前几天有一个需求很头痛,部门是有上下级关系的,在给部门的经理赋予角色和权限的时候,通常我们都会认为假如经理A的部门是1,那么我给了他部门1 的管理权限,那么1的下级部门101,102,103 &quo ...
- PL/SQL存储过程编程
PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...
- SQL 存储过程(学生,课程表,选修表)
SQL 存储过程(学生,课程表,选修表) 一.存储过程的分类 在SQL Server中存储过程分过两类: 1)系统存储过程("sp_"作为前缀) 2)用户自定义存储过程 二.创建和 ...
- MySQL 存储过程循环
MySQL 存储过程循环 MySQL循环语句(包括WHILE,REPEAT和LOOP)来根据条件反复运行代码块. MySQL提供循环语句,允许您根据条件重复执行一个SQL代码块. MySQL中有三个 ...
- 《软件测试自动化之道》读书笔记 之 SQL 存储过程测试
<软件测试自动化之道>读书笔记 之 SQL 存储过程测试 2014-09-28 待测程序测试程序 创建测试用例以及测试结果存储 执行T-SQL脚本 使用BCP工具导入测试用例数据 ...
- SQL存储过程分页(通用的拼接SQL语句思路实现)
多表通用的SQL存储过程分页 案例一: USE [Community] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Scrip ...
- SQL存储过程的调用及写法
调用函数: public class SqlProcess { ; public DataSet ReturnSet = null; public SqlDataAdapter adapter = n ...
随机推荐
- oracle 11g rac 修改字符集
系统版本: Oracle Linux Server release 5.7 数据库版本: Oracle Database 11g Enterprise Edition Release 11.2.0.3 ...
- Object.keys()
Object.keys(obj),返回一个数组,数组里是该obj可被枚举的所有属性名.请看示例: 示例一: function Pasta(grain, width, shape) { this.gra ...
- 怎样在cmd(命令提示符)下进行复制粘贴操作
如右图,右键命令提示符窗口的标题栏,选择属性. 选择“编辑选项”里的“快速编辑模式”,并确定之: 在弹出的应用选择提示框上选择“保存属性,供以后具有相同标题的窗口使用”: 如此你就可以 ...
- How to avoid C# console applications from closing automatically.
One way is to interop it with msvcrt.dll You can pinvoke this C function into your C# application. T ...
- Javascript核心概述 - 深入了解javascript
/* 一.执行上下文:堆栈(底部全局上下文+顶部当前活动上下文) */ /* 二.变量对象: 变量根据执行上下文,找到数据存储位置,这种机制叫变量对象 1. 变量都要var定义,且都不能delete ...
- 2186: [Sdoi2008]沙拉公主的困惑 - BZOJ
Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现 ...
- BZOJ 4031: [HEOI2015]小Z的房间 Matrix-Tree定理
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=4031 题解: Matrix-tree定理解决生成树计数问题,其中用到高斯消元法求上三角矩 ...
- 【BZOJ】【1927】【SDOI2010】星际竞速
网络流/费用流 比较简单的一题,对于每个星球,将它拆成两个点,然后二分图建模:左部结点与S相连,流量为1费用为0:右部结点与T相连,流量为1费用为0:对于每条航道x->y,连边x->y+n ...
- poj 1797 Heavy Transportation(最短路变种2,连通图的最小边)
题目 改动见下,请自行画图理解 具体细节也请看下面的代码: 这个花了300多ms #define _CRT_SECURE_NO_WARNINGS #include<string.h> #i ...
- DJANGO问题--Error: ‘ManyRelatedManager’ object is not iterable
http://www.itblah.com/django-error-manyrelatedmanager-object-iterable/ Django: Error: ‘ManyRelatedMa ...