首页 > 代码库 > sql 存储过程 循环使用
sql 存储过程 循环使用
USE [clab]GO/****** Object: StoredProcedure [dbo].[sp_bd_getResultByEcd] Script Date: 08/06/2014 16:47:55 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- 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) --项目编码字符串,各项目编码以,进行分割 )ASDeclare @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 ENDelse 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 ENDGO
此存储过程为:传入病人ID,项目编码集,其中各编码以逗号分割。
存储过程里面要做的就是循环读取项目编码集里面的单个编码,及结合病人ID获取该病人及该项目的检验结果
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。