【发布时间】:2019-02-21 14:25:15
【问题描述】:
我有三个表:test_main(开始时可能为空)、test_sec(几乎总是有记录)和绑定表test_ref(存储来自test_main 和test_sec 的记录的唯一ID 组合) .
我需要创建一个包,其中包含处理 test_main 和 test_ref 中记录的插入和更新的过程。我需要一些帮助。
这是一个包的代码:
create or replace package TEST_PKG is
type t_num is table of number;
procedure ADD (arg_main_id number
, arg_name varchar2
, arg_sec_ids t_num);
end test_pkg;
create or replace package body test_pkg is
procedure ADD (arg_main_id number
, arg_name varchar2
, arg_sec_ids t_num)
is begin
insert into test_main (id, col_name)
values (arg_main_id, arg_name);
commit;
for i in arg_sec_ids.first .. arg_sec_ids.last loop
insert into test_ref (main_id, sec_id)
values (arg_main_id, arg_sec_ids(i));
end loop;
commit;
end ADD;
end test_pkg;
我计划在 Oracle APEX 5.1 PL/SQL 动态操作中调用此过程,如下所示:
declare
selection apex_t_number
-- or "test_pkg.t_num" with values from "apex_string.split_numbers" added through a "for" loop later
begin
selection := apex_string.split_numbers(:P1_SELECT2,':');
-- for example, '1:2:3' string results in a [1,2,3] array
ADD (arg_main_id => :P1_MAIN_ID
, arg_name => :P1_MAIN_NAME
, arg_sec_ids => selection);
end;
但我也希望能够将其称为ADD (arg_main_id => :P1_MAIN_ID, arg_name => :P1_MAIN_NAME),默认值为arg_sec_ids。
那么,是否可以在 PL/SQL 过程中为集合定义默认值,如果可以,如何定义?
【问题讨论】:
标签: oracle plsql oracle11g oracle-apex-5.1