错误 #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预约排队; |