错误 #301 » zl100_userjob预约排队.txt
1 |
CREATE OR REPLACE PROCEDURE zl100_userjob预约排队 as |
---|---|
2 |
type rec_病人挂号记录 is record( |
3 |
队列名称_In 病人挂号记录.执行部门id%Type, |
4 |
业务id_In 病人挂号记录.id%Type, |
5 |
患者姓名_In 病人挂号记录.姓名%Type, |
6 |
诊室_In 病人挂号记录.诊室%Type, |
7 |
执行人_in 病人挂号记录.执行人%type |
8 |
); |
9 |
v_病人挂号记录 rec_病人挂号记录; |
10 |
v_排队号码 排队叫号队列.排队号码%type; |
11 |
n_id 病人挂号记录.id%type; |
12 |
v_Id 排队叫号队列.id%type; |
13 |
v_排队序号 排队叫号队列.排队序号%type; |
14 |
|
15 |
begin |
16 |
|
17 |
declare |
18 |
cursor mycusor is |
19 |
select distinct id |
20 |
from 病人挂号记录 |
21 |
where 记录状态 = 1 |
22 |
and 预约 = 1 |
23 |
and 预约方式 <> '现场' |
24 |
and 执行状态=0 |
25 |
and trunc(发生时间) = trunc(sysdate) |
26 |
order by id; |
27 |
|
28 |
begin |
29 |
open mycusor; |
30 |
|
31 |
loop |
32 |
fetch mycusor |
33 |
into n_id; |
34 |
if mycusor% found then |
35 |
|
36 |
select 执行部门id, id, 姓名, 诊室,执行人 |
37 |
into v_病人挂号记录 |
38 |
from 病人挂号记录 |
39 |
where id = n_id; |
40 |
|
41 |
Select Nvl(Max(lpad(排队号码, 8, 0)), 0) + 1 |
42 |
Into v_排队号码 |
43 |
From 排队叫号队列 |
44 |
where 业务类型 = 0 |
45 |
and 队列名称 = v_病人挂号记录.队列名称_In |
46 |
and 排队时间 between Trunc(sysdate) and |
47 |
Trunc(sysdate) + 1 - 1 / 24 / 60 / 60; |
48 |
|
49 |
Select 排队叫号队列_Id.Nextval Into v_Id From Dual; |
50 |
|
51 |
v_排队序号 := Zl_排队叫号队列_Getqueuenum(0, v_病人挂号记录.队列名称_In); |
52 |
|
53 |
Insert Into 排队叫号队列 |
54 |
(ID, |
55 |
业务类型, |
56 |
队列名称, |
57 |
科室id, |
58 |
医生姓名, |
59 |
排队号码, |
60 |
业务id, |
61 |
患者姓名, |
62 |
诊室, |
63 |
排队序号, |
64 |
排队状态, |
65 |
排队时间) |
66 |
Values |
67 |
(v_Id, |
68 |
0, |
69 |
v_病人挂号记录.队列名称_In, |
70 |
v_病人挂号记录.队列名称_In, |
71 |
v_病人挂号记录.执行人_In, |
72 |
v_排队号码, |
73 |
v_病人挂号记录.业务id_In, |
74 |
v_病人挂号记录.患者姓名_In, |
75 |
v_病人挂号记录.诊室_In, |
76 |
v_排队序号, |
77 |
0, |
78 |
Sysdate); |
79 |
|
80 |
else |
81 |
exit; |
82 |
end if; |
83 |
end loop; |
84 |
close mycusor; |
85 |
end; |
86 |
end zl100_userjob预约排队; |