oracle存储过程语法

1 create or replace procedure lis_zhifang_return_confirm(barcode in varchar2,deptcode1 in varchar2)
2 as
3 begin
4    update  clc_recipe r  set  r.deptcode=deptcode1 , r.deptname='检验科' where r.labcode=barcode;
5    commit;
6 
7 end;

 

 1 CREATE OR REPLACE PROCEDURE peis_transmitresult(
 2 barcode in varchar2,   --条码号
 3 excdoctor in varchar2 ,  --执行医生ID
 4 excdoctorname in varchar2,   --执行医生name
 5 excdate in date ,--执行日期
 6 result in varchar2 , --结果值
 7 indid in varchar2 , --小项id
 8 indname in varchar2 , --小项name
 9 unnormal in varchar2 , --正异常标志
10 sn in varchar2 , --小项序号
11 maxval in varchar2 , --结果最大值
12 minval in varchar2 , --结果最小值
13 resultunit in varchar2 , --结果单位
14 range in varchar2  --参考范围
15 ) 
16 as
17 --变量区
18 v_hosnum varchar2(6) :='';  --医院编码
19 v_itemuuid varchar2(20) :='';--组合的uuid
20 v_examid varchar2(15) :='';--预约单ID
21 v_pexamid varchar2(15) :='';--体检编号
22 v_itemcode varchar2(15) :='';--项目id
23 v_itemname varchar2(50) :='';--项目name
24 v_excdept  varchar2(10) :='';--执行科室id
25 v_excdeptname  varchar2(10) :='';--执行科室name
26 v_excdoctor varchar2(10) :=excdoctor;--执行医生id
27 v_excdoctorname varchar2(20) :=excdoctorname;--执行医生name
28 v_excdate date :=excdate ;   --执行日期
29 v_result varchar2(30) :=result ;   --执行日期
30 v_indid varchar2(30) :=indid ;   --小项id
31 v_indname varchar2(30) :=indname ; --小项name
32 v_unnormal varchar2(30) := unnormal ; --正异常标志
33 v_sn varchar2(10) := sn ; --小项序号
34 v_maxval varchar2(10) := maxval ; --结果最大值
35 v_minval varchar2(10) := minval ; --结果最小值
36 v_resultunit varchar2(10) := resultunit ; --单位
37 v_range varchar2(10) := range ; --参考范围
38 
39 v_count number :=0;  --未传回结果的数量
40 BEGIN
41 
42 select a.hosnum,a.itemuuid,a.examid,a.pexamid,a.itemcode,a.itemname,a.excdept,a.excdeptname
43 
44 into v_hosnum,v_itemuuid,v_examid,v_pexamid,v_itemcode,v_itemname,v_excdept,v_excdeptname
45 from pexam_items_title a where a.tmcode=barcode;
46 --插入结果表
47 insert into pexam_results
48   (hosnum, examid, pexamid, excdept, excdeptname, excdoctor, excdoctorname, 
49   excdate, stringvalue, numvalue, result, comid, comname, indid, indname, 
50   examtype, unnormal, itemuuid, sn, maxval, minval, resultunit, range, parentid)
51 values
52   (v_hosnum, v_examid, v_pexamid, v_excdept, v_excdeptname, v_excdoctor, v_excdoctorname
53   , v_excdate, '', '', v_result, v_itemcode, v_itemname, v_indid, v_indname,
54    '', v_unnormal, v_itemuuid, v_sn, v_maxval, v_minval, v_resultunit, v_range, '');
55 commit;
56 
57 --判断是否组合下面的小项结果都有了, 
58 --如果都有了 就回执这个组合  保存为已完成。  否则不回执。
59 select count(*) count into v_count  from pexam_results  c where c.pexamid= v_pexamid
60 and c.itemuuid=v_itemuuid  and c.excdate is null ;
61 IF v_count=0 THEN
62    BEGIN 
63        update pexam_items_title a set a.excdate=v_excdate,a.excdoctorid=v_excdoctor, a.excdoctorname=v_excdoctorname,a.deptSum='' 
64        where a.hosnum=v_hosnum and a.itemuuid=v_itemuuid;
65        commit;
66    END;
67  END IF;
68 
69 END peis_transmitresult;

 输出语句:

 1 DBMS_OUTPUT.PUT_LINE('GG在这里。。'); 

  1 grant execute on peis_transmitresult to lis_zhifang; 

 

posted on 2015-10-23 16:15  ..小树苗  阅读(320)  评论(0编辑  收藏  举报

导航