问题描述
执行基于select语句的过程后,该结果值应存储在我们创建的新表中。我的表名是pr_basic
create or replace procedure pro_basic_emp(P_employee_number in number) is
l_employee_number pr_basic.employee_number%type;
l_full_name pr_basic.full_name%type;
l_job pr_basic.job%type;
l_name pr_basic.name%type;
l_salary pr_basic.salary%type;
cursor pr_basic_emp is
SELECT papf.employee_number as EmployeeNumber,
papf.full_name as EmployeeName,
pj.NAME as job,
haou.NAME as ORGANIZATION,
ppp.proposed_salary_n as salary
FROM per_all_people_f papf,
per_all_assignments_f paaf,
per_jobs pj,
hr_all_organization_units haou,
per_position_definitions ppd,
per_all_positions pap,
per_pay_proposals ppp
WHERE 1 = 1
AND SYSDATE BETWEEN papf.effective_start_date AND
papf.effective_end_date
AND papf.current_employee_flag = 'Y'
AND papf.employee_number IS NOT NULL
AND paaf.person_id = papf.person_id
AND SYSDATE BETWEEN paaf.effective_start_date AND
paaf.effective_end_date
AND paaf.job_id = pj.job_id
AND paaf.organization_id = haou.organization_id
AND paaf.position_id = pap.position_id
AND papf.employee_number = p_employee_number
AND pap.position_definition_id = ppd.position_definition_id
AND ppp.pay_proposal_id =
(SELECT MAX(pay_proposal_id)
FROM per_pay_proposals
WHERE assignment_id = paaf.assignment_id)
order by employee_number asc;
begin
for hr_basic_emp in pr_basic_emp loop
if (pr_basic is null) then
insert into pr_basic
(employee_number, full_name, job, name, salary)
values
(pr_basic.l_employee_number,pr_basic.l_full_name, pr_basic.l_job, pr_basic.l_name, pr_basic.l_salary);
end if;
end loop;
end pro_basic_emp;
专家解答
你不需要光标,你只需要一个插入语句
create or replace procedure pro_basic_emp(P_employee_number in number) is
begin
insert into pr_basic
(employee_number, full_name, job, name, salary)
SELECT papf.employee_number as EmployeeNumber,
papf.full_name as EmployeeName,
pj.NAME as job,
haou.NAME as ORGANIZATION,
ppp.proposed_salary_n as salary
FROM per_all_people_f papf,
per_all_assignments_f paaf,
per_jobs pj,
hr_all_organization_units haou,
per_position_definitions ppd,
per_all_positions pap,
per_pay_proposals ppp
WHERE 1 = 1
AND SYSDATE BETWEEN papf.effective_start_date AND
papf.effective_end_date
AND papf.current_employee_flag = 'Y'
AND papf.employee_number IS NOT NULL
AND paaf.person_id = papf.person_id
AND SYSDATE BETWEEN paaf.effective_start_date AND
paaf.effective_end_date
AND paaf.job_id = pj.job_id
AND paaf.organization_id = haou.organization_id
AND paaf.position_id = pap.position_id
AND papf.employee_number = p_employee_number
AND pap.position_definition_id = ppd.position_definition_id
AND ppp.pay_proposal_id =
(SELECT MAX(pay_proposal_id)
FROM per_pay_proposals
WHERE assignment_id = paaf.assignment_id)
order by employee_number asc;
end pro_basic_emp;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




