create or replace trigger HY_住院费用记录_DOCTOR_INSERT
before INSERT
ON 住院费用记录
FOR EACH ROW --说明创建的是行级触发器
DECLARE
v_管床医生 病人变动记录.经治医师%TYPE;
BEGIN
--根据病人ID,主页ID获得最新的管床医生
SELECT d.经治医师 INTO v_管床医生 FROM 病人变动记录 d
WHERE d.病人id=:new.病人id and d.主页id=:new.主页id
AND d.开始时间 = (SELECT MAX(b.开始时间) FROM 病人变动记录 b WHERE b.病人id=:new.病人id and b.主页id=:new.主页id)
AND d.终止时间 IS NULL;
-- AND ROWNUM = 1;
--判断临床是否操作选择了管床医生
/* If v_管床医生 Is NULL then
SELECT nvl(a.住院医师,'未选择') INTO v_管床医生 FROM 病案主页 a WHERE a.病人id= :new.病人id and a.主页id=:new.主页id;
END IF;
*/
--异常处理
EXCEPTION
WHEN NO_DATA_FOUND THEN
SELECT nvl(a.住院医师,'未选择') INTO v_管床医生 FROM 病案主页 a WHERE a.病人id=:new.病人id and a.主页id=:new.主页id;
Insert Into HY_住院费用记录
(ID, 记录性质, NO, 记录状态, 序号, 从属父号, 价格父号, 多病人单, 记帐单ID,病人id, 主页id, 医嘱序号, 门诊标志, 记帐费用, 姓名, 性别, 年龄, 标识号, 床号, 病人病区id,
病人科室id, 费别, 收费类别, 收费细目id, 计算单位, 付数, 发药窗口, 数次, 加班标志, 附加标志, 婴儿费, 收入项目id, 收据费目, 标准单价, 应收金额, 实收金额, 划价人,
开单部门id, 开单人, 发生时间, 登记时间, 执行部门id, 执行人, 执行状态, 执行时间, 结论, 操作员编号, 操作员姓名, 结帐ID, 结帐金额, 保险大类id, 保险项目否, 保险编码,
费用类型, 统筹金额, 是否上传,摘要, 是否急诊, 医疗小组id, 缴款组ID, 腔镜, 摘要1, 待转出,管床医生)
Values
(:NEW.ID, :NEW.记录性质, :NEW.NO, :NEW.记录状态, :NEW.序号, :NEW.从属父号,:NEW.价格父号,:NEW.多病人单,:NEW.记帐单ID,:NEW.病人id,:NEW.主页id,
:NEW.医嘱序号, :NEW.门诊标志, :NEW.记帐费用, :NEW.姓名, :NEW.性别, :NEW.年龄, :NEW.标识号, :NEW.床号, :NEW.病人病区id,:NEW.病人科室id,:NEW.费别,
:NEW.收费类别,:NEW.收费细目id,:NEW.计算单位, :NEW.付数,:NEW.发药窗口, :NEW.数次, :NEW.加班标志, :NEW.附加标志, :NEW.婴儿费, :NEW.收入项目id,
:NEW.收据费目, :NEW.标准单价, :NEW.应收金额, :NEW.实收金额, :NEW.划价人, :NEW.开单部门id, :NEW.开单人, :NEW.发生时间, :NEW.登记时间, :NEW.执行部门id,
:NEW.执行人, :NEW.执行状态, :NEW.执行时间, :NEW.结论, :NEW.操作员编号, :NEW.操作员姓名, :NEW.结帐ID, :NEW.结帐金额, :NEW.保险大类id, :NEW.保险项目否,
:NEW.保险编码, :NEW.费用类型, :NEW.统筹金额, :NEW.是否上传, :NEW.摘要, :NEW.是否急诊, :NEW.医疗小组id, :NEW.缴款组ID, :NEW.腔镜, :NEW.摘要1,
:NEW.待转出, v_管床医生);
--其他异常
WHEN OTHERS THEN
--zl_ErrorCenter(SQLCode, SQLErrM);
Raise_application_error (-20221, '未知错误!');
--无异常执行这段
Insert Into HY_住院费用记录
(ID, 记录性质, NO, 记录状态, 序号, 从属父号, 价格父号, 多病人单, 记帐单ID,病人id, 主页id, 医嘱序号, 门诊标志, 记帐费用, 姓名, 性别, 年龄, 标识号, 床号, 病人病区id,
病人科室id, 费别, 收费类别, 收费细目id, 计算单位, 付数, 发药窗口, 数次, 加班标志, 附加标志, 婴儿费, 收入项目id, 收据费目, 标准单价, 应收金额, 实收金额, 划价人,
开单部门id, 开单人, 发生时间, 登记时间, 执行部门id, 执行人, 执行状态, 执行时间, 结论, 操作员编号, 操作员姓名, 结帐ID, 结帐金额, 保险大类id, 保险项目否, 保险编码,
费用类型, 统筹金额, 是否上传,摘要, 是否急诊, 医疗小组id, 缴款组ID, 腔镜, 摘要1, 待转出,管床医生)
Values
(:NEW.ID, :NEW.记录性质, :NEW.NO, :NEW.记录状态, :NEW.序号, :NEW.从属父号,:NEW.价格父号,:NEW.多病人单,:NEW.记帐单ID,:NEW.病人id,:NEW.主页id,
:NEW.医嘱序号, :NEW.门诊标志, :NEW.记帐费用, :NEW.姓名, :NEW.性别, :NEW.年龄, :NEW.标识号, :NEW.床号, :NEW.病人病区id,:NEW.病人科室id,:NEW.费别,
:NEW.收费类别,:NEW.收费细目id,:NEW.计算单位, :NEW.付数,:NEW.发药窗口, :NEW.数次, :NEW.加班标志, :NEW.附加标志, :NEW.婴儿费, :NEW.收入项目id,
:NEW.收据费目, :NEW.标准单价, :NEW.应收金额, :NEW.实收金额, :NEW.划价人, :NEW.开单部门id, :NEW.开单人, :NEW.发生时间, :NEW.登记时间, :NEW.执行部门id,
:NEW.执行人, :NEW.执行状态, :NEW.执行时间, :NEW.结论, :NEW.操作员编号, :NEW.操作员姓名, :NEW.结帐ID, :NEW.结帐金额, :NEW.保险大类id, :NEW.保险项目否,
:NEW.保险编码, :NEW.费用类型, :NEW.统筹金额, :NEW.是否上传, :NEW.摘要, :NEW.是否急诊, :NEW.医疗小组id, :NEW.缴款组ID, :NEW.腔镜, :NEW.摘要1,
:NEW.待转出, v_管床医生);
END HY_住院费用记录_DOCTOR_INSERT;
如果--根据病人ID,主页ID获得最新的管床医生
SELECT d.经治医师 INTO v_管床医生 FROM 病人变动记录 d
WHERE d.病人id=:new.病人id and d.主页id=:new.主页id
AND d.开始时间 = (SELECT MAX(b.开始时间) FROM 病人变动记录 b WHERE b.病人id=:new.病人id and b.主页id=:new.主页id)
AND d.终止时间 IS NULL;
这段sql查询不到数据触发NO_DATA_FOUND异常
查询到数据则执行
--无异常执行这段
Insert Into HY_住院费用记录
(ID, 记录性质, NO, 记录状态, 序号, 从属父号, 价格父号, 多病人单, 记帐单ID,病人id, 主页id, 医嘱序号, 门诊标志, 记帐费用, 姓名, 性别, 年龄, 标识号, 床号, 病人病区id,
病人科室id, 费别, 收费类别, 收费细目id, 计算单位, 付数, 发药窗口, 数次, 加班标志, 附加标志, 婴儿费, 收入项目id, 收据费目, 标准单价, 应收金额, 实收金额, 划价人,
开单部门id, 开单人, 发生时间, 登记时间, 执行部门id, 执行人, 执行状态, 执行时间, 结论, 操作员编号, 操作员姓名, 结帐ID, 结帐金额, 保险大类id, 保险项目否, 保险编码,
费用类型, 统筹金额, 是否上传,摘要, 是否急诊, 医疗小组id, 缴款组ID, 腔镜, 摘要1, 待转出,管床医生)
Values
(:NEW.ID, :NEW.记录性质, :NEW.NO, :NEW.记录状态, :NEW.序号, :NEW.从属父号,:NEW.价格父号,:NEW.多病人单,:NEW.记帐单ID,:NEW.病人id,:NEW.主页id,
:NEW.医嘱序号, :NEW.门诊标志, :NEW.记帐费用, :NEW.姓名, :NEW.性别, :NEW.年龄, :NEW.标识号, :NEW.床号, :NEW.病人病区id,:NEW.病人科室id,:NEW.费别,
:NEW.收费类别,:NEW.收费细目id,:NEW.计算单位, :NEW.付数,:NEW.发药窗口, :NEW.数次, :NEW.加班标志, :NEW.附加标志, :NEW.婴儿费, :NEW.收入项目id,
:NEW.收据费目, :NEW.标准单价, :NEW.应收金额, :NEW.实收金额, :NEW.划价人, :NEW.开单部门id, :NEW.开单人, :NEW.发生时间, :NEW.登记时间, :NEW.执行部门id,
:NEW.执行人, :NEW.执行状态, :NEW.执行时间, :NEW.结论, :NEW.操作员编号, :NEW.操作员姓名, :NEW.结帐ID, :NEW.结帐金额, :NEW.保险大类id, :NEW.保险项目否,
:NEW.保险编码, :NEW.费用类型, :NEW.统筹金额, :NEW.是否上传, :NEW.摘要, :NEW.是否急诊, :NEW.医疗小组id, :NEW.缴款组ID, :NEW.腔镜, :NEW.摘要1,
:NEW.待转出, v_管床医生);
现在的问题是编译通过了,但是HY_住院费用记录中就是没有同步过来数据,请前辈给分析下问题在哪里。
万分感谢!