首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PL/SQL开发两个表之间的关系

用PL/SQL开发两个表之间的关系
EN

Stack Overflow用户
提问于 2013-05-09 23:05:13
回答 1查看 369关注 0票数 1

我是PL/SQL语言的新手,我正在解决一个问题,并在寻找正确方向的建议。任何帮助都将不胜感激!

我有一个Employee表和一个Building表。

Employee表包括Employee_ID、Last_Name、First_Name和职务(F/P)(全职或兼职)。建筑物表由Employee_ID和Building_location组成。(这是员工工作的位置)家庭或办公室。

我想让用户输入用户输入的last_name。因此,我要从Employee中查找信息:employee Name、Job (full or部分employee)和building_location。例如,如果用户键入Johnson,我希望我的输出如下所示:

代码语言:javascript
复制
Employee Name     Job Position     Building Location
====================================================
Andre Johnson      Part Time        Home Office
Nick Johnson       Full Time        Downtown Office

如果用户输入任何字符串,我希望列出为该公司工作的所有员工。但是,如果姓名在Employee表中,如' Johnson‘is,则只显示Johnson。我需要添加另一个SELECT子句吗?

在这一点上,我整理了一些代码来检查员工是否为公司工作。我希望在此基础上建立。

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

发布于 2013-05-09 23:13:05

你可以做到这一点。最简单的方法可能是这样:

代码语言:javascript
复制
    ...
    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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16465007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档