1

私は 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;
4

1 に答える 1