【问题标题】:How to check if a person exsist and then insert into another table using pl/sql?如何检查一个人是否存在,然后使用 pl/sql 插入另一个表?
【发布时间】:2016-10-31 11:40:49
【问题描述】:

创建一个匿名 PL/SQL 块,它根据用户使用 EMPLOYEES 表中的有效姓氏(即 King、Kochhar 或 De Haan,或 Hunold,或 Ernst,等等......)。如果雇员 last_name 存在于 EMPLOYEES 表中,则将以下字符串插入到 OUTPUT_LOG 表中: '找到员工'。通过检查 OUTPUT_LOG 表的内容来测试您的 PL/SQL 块。您应该在 OUTPUT_LOG 表中找到您插入的字符串。

employee 表有这些列 员工ID , 名 , 姓 , 电子邮件 , 电话号码 , 雇用日期 , JOB_ID , 薪水 , COMMISSION_PCT , MANAGER_ID , DEPARTMENT_ID

output_log 表只有一列 VARCHAR2(250) 称为 data 和 id 列作为 PRIMARY KEY

我正在努力检查该名称是否存在于表中。我考虑过使用

 begin 
SELECT e.LAST_NAME as LAST_NAME, o.data
INTO OUTPUT_LOG
FROM EMPLOYEES as e, OUTPUT_LOG as O  
WHERE e.employee_id = o.id
 end;

但我认为这样做既不明智也不有意义

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    由于这似乎是一个家庭作业问题,我不会为您解决所有问题,但是(为了帮助您顺利进行)您可以使用SELECT ... INTO,如果没有找到一行,它会引发NO_DATA_FOUND 可以捕获的异常(并使用它绕过INSERT)。像这样的:

    DECLARE
      p_found NUMBER(1,0);
    BEGIN
      SELECT 1
      INTO   p_found
      FROM   Employees
      WHERE  ROWNUM = 1
      AND    last_name = 'King'; -- replace with your where condition
    
      -- then do the insert here (since it will only reach this point if
      -- a row was found).
    EXCEPTION
      WHEN NO_DATA_FOUND THEN
        NULL;
    END;
    /
    

    【讨论】:

    • 感谢所有我需要的信息,因为我确实想自己弄清楚这些信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多