我是PL / SQL语言的新手,我正在解决一个问题,正在寻找正确方向的建议。任何帮助将不胜感激!
我有一张员工表和一张建筑表 Employee表由Employee_ID,Last_Name,First_Name和Job(F / P)全部或兼职组成。 Building表由Employee_ID和Building_location组成(这是员工所在的位置)家庭或办公室。
我希望用户从用户输入中输入last_name。因此,我正在寻找员工的信息:员工姓名,工作(全职或部分员工)和building_location。例如,如果用户键入Johnson:
,我希望我的输出看起来像这样Employee Name Job Position Building Location
====================================================
Andre Johnson Part Time Home Office
Nick Johnson Full Time Downtown Office
如果用户输入任何字符串,我想列出为公司工作的所有员工。但如果名称在“员工”表上就像“约翰逊”那么它只会显示约翰逊。我需要添加另一个SELECT子句吗?
此时我整理了一些代码,用于检查员工是否为公司工作。我希望从中构建。
ACCEPT p_1 PROMPT 'Please enter the last name of the employee:'
DECLARE
v_name employee.last_name%TYPE := '&p_1';
v_lname employee.last_name%TYPE;
v_fname employee.first_name%TYPE;
v_jobpos employee.job%TYPE;
v_buildtype building.building_type%TYPE;
v_count NUMBER;
BEGIN
SELECT COUNT(*)
INTO v_count
FROM employee
WHERE UPPER(last_name) = UPPER(v_name);
IF v_count = 0 THEN
DBMS_OUTPUT.PUT_LINE('EMPLOYEE NAME Job Position Building Location');
DBMS_OUTPUT.PUT_LINE('----------------------------------------------------' );
for i in (select * from employee order by last_name) loop
DBMS_OUTPUT.PUT_LINE(i.last_name || ', ' || i.first_name)
end loop;
ELSE
for i in (select * from employee order by last_name) loop
DBMS_OUTPUT.PUT_LINE(i.last_name || ', ' || i.first_name);
end loop;
END IF;
END;
答案 0 :(得分:0)
你可以这样做。最简单的方法可能是这样的:
...
IF v_count = 0 THEN
DBMS_OUTPUT.PUT_LINE(v_name || ' Does not work here.');
/* New code starts here! */
DBMS_OUTPUT.PUT_LINE('Employees are:');
for r in (select * from employees) loop
dbms_output.put_line(r.last_name||', '||r.first_name);
end loop;
/* New code ends here! */
ELSE
...
end if;
end;