私は PL/SQL 言語に不慣れで、問題に取り組んでおり、正しい方向へのアドバイスを探していました。どんな助けでも大歓迎です!
Employee テーブルと Building テーブルがあります。
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
ユーザーが任意の文字列を入力した場合、会社で働くすべての従業員を一覧表示したいと考えています。ただし、'Johnson' のように名前が Employee テーブルにある場合は、Johnson のみが表示されます。別の 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;