下面的包将在表中插入10条记录,然后我需要将这些记录传递回调用程序并显示它们。我尝试过不同的东西,我能想到的和互联网上的许多搜索,都没有成功地找到我想要做的事情。
包装规格:
<ComboBox IsEditable="true">
<ComboBoxItem Content="aaaaa"/>
<ComboBoxItem Content="bbbbb"/>
<Separator IsEnabled="false" TextSearch.Text="©"/>
<ComboBoxItem Content="ccccc" IsEnabled="false"/>
</ComboBox>
PACKAGE BODY:
CREATE OR REPLACE PACKAGE Hospital AS
TYPE TrtRecTyp IS RECORD (
Pat_Nbr Treatment.Pat_Nbr%TYPE,
Trt_Procedure Treatment.Trt_Procedure%TYPE,
Phys_ID Physician.Phys_ID%TYPE,
Phys_Name Physician.Phys_Name%TYPE,
Phys_Specialty Physician.Phys_Specialty%TYPE);
PROCEDURE BuildPatTbl
(p_trt_rec OUT TrtRecTyp,
p_num_rows IN OUT NUMBER);
致电计划:
PROCEDURE BuildPatTbl
(p_trt_rec OUT TrtRecTyp,
p_num_rows IN OUT NUMBER) AS
CURSOR pat_cur IS
SELECT trt.Pat_Nbr, Trt_Procedure, trt.Phys_ID, Phys_Name, Phys_Specialty
FROM Treatment trt, Physician phys
WHERE trt.Phys_ID = phys.Phys_ID;
lv_rec_cnt_num NUMBER(2);
BEGIN
lv_rec_cnt_num := p_num_rows;
FOR lv_trt_rec IN pat_cur LOOP
INSERT INTO t_patTrt (T_patTrt_ID, Pat_Nbr, Trt_Procedure,
Phys_ID, Phys_Name, Phys_Specialty)
VALUES(T_patTrt_ID_seq.NEXTVAL, lv_trt_rec.Pat_Nbr,
lv_trt_rec.Trt_Procedure, lv_trt_rec.Phys_ID,
lv_trt_rec.Phys_Name, lv_trt_rec.Phys_Specialty);
lv_rec_cnt_num := lv_rec_cnt_num + 1 ;
END LOOP;
p_num_rows := lv_rec_cnt_num;
END BuildPatTbl;
答案 0 :(得分:0)
你得到什么错误?
您似乎并未在启动器的p_trt_rec
变量中选择任何数据,因此您无法在程序中返回任何内容。
您应该将每一行保存到一个集合中(您当前没有这样做)并将整个集合从BuildPatTbl
传回,然后遍历它。
您需要另一个变量和类型声明。它会像 -
TYPE my_tbl IS TABLE OF TrtRecTyp;
my_list my_tbl;
然后将每条记录存储在my_list
中并返回。
查看this page以获取更多指导。