Oracle 从plsql中的另一个过程引用变量
我写了一个包:Oracle 从plsql中的另一个过程引用变量,oracle,plsql,Oracle,Plsql,我写了一个包: CREATE OR REPLACE PACKAGE BODY NEW_HIRE_PKG AS PROCEDURE load_emp( errbuf OUT VARCHAR2, retcode OUT VARCHAR2 ) AS CURSOR cur_person_info IS SELECT * FROM table_abc; CURSOR cur_person_a
CREATE OR REPLACE
PACKAGE BODY NEW_HIRE_PKG
AS
PROCEDURE load_emp(
errbuf OUT VARCHAR2,
retcode OUT VARCHAR2 )
AS
CURSOR cur_person_info
IS
SELECT * FROM table_abc;
CURSOR cur_person_adr
IS
SELECT * FROM table_adr;
l_person_id NUMBER;
l_emp_num NUMBER;
lv_add_type VARCHAR2(100);
lv_address_line1 VARCHAR2(100);
BEGIN
FOR person_info_rec IN cur_address_info
LOOP
hr_employee_api.create_employee ( p_validate => FALSE,
--INPUT Parameter
P_HIRE_DATE =>person_info_rec.DATE_START,
-- output
p_employee_number => lc_employee_number, p_person_id => ln_person_id );
END LOOP ;
END;
PROCEDURE load_add(
errbuf OUT VARCHAR2,
retcode OUT VARCHAR2 )
as
ln_person_id number;
BEGIN
FOR address_info_rec IN cur_address_info
LOOP
BEGIN
hr_person_address_api.create_person_address
(p_validate => FALSE,
p_effective_date => TRUNC(SYSDATE),
p_person_id=> ln_person_id,
--output
p_address_type => lv_add_type,
p_address_line1 => lv_address_line1);
end;
end loop;
end;
end;
现在在程序加载添加中有一个变量ln_person_id,它应该是程序加载emp中生成的人员id。我想一个一个地通过这个程序。我可以通过将ln\u person\u id设置为对象来实现吗?根据您的代码判断,您有两个并发程序—一个调用load\u emp(),另一个调用load\u add()。如果这确实是您想要的结构,那么这两个调用将在单独的会话中运行,并且您无法将变量从一个传递到另一个。您最好将load\u emp中的所有person\u id值保存在自定义表中。数据随后可能会被load_add()使用
不过,我会重组你的方案。为什么不在load_emp()的循环中调用load_add()?根据您的代码判断,您有两个并发程序—一个调用load_emp(),另一个调用load_add()。如果这确实是您想要的结构,那么这两个调用将在单独的会话中运行,并且您无法将变量从一个传递到另一个。您最好将load\u emp中的所有person\u id值保存在自定义表中。数据随后可能会被load_add()使用 不过,我会重组你的方案。为什么不在load_emp()的循环中调用load_add()