如何在plsql中使用select with if

时间:2015-07-31 13:44:20

标签: plsql

我试图打印一条消息,告诉您用户是否退出员工表。

这是我的代码;

DECLARE
 empid  employees.employee_id%type := &id;

BEGIN
if empid IS NOT NULL Then
DBMS_OUTPUT.PUT_LINE('user Exists');
elsif
if empid IS NULL Then
DBMS_OUTPUT.PUT_LINE('User doesnt exist');
END;
/

它返回用户退出,即使它不是我使用数据测试它不知道在哪里更改或我是否使用select语句来选择数据

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

您需要从选择中填充变量。通常,它会像这样工作:

select id into empid from emp where id = 1234

但要注意。如果该ID不存在,那么您将获得ora-01403。要使用此方法将其选择到变量中,结果集中需要有一条记录。因此,如果您的ID不存在,请重新排列此类查询以返回null

select (select id from emp where id = 1234) into empid from dual

答案 1 :(得分:1)

2种可能的解决方案:

DECLARE
 empid  employees.employee_id%type := &id;
 cnt integer;
BEGIN
 select count(*) into cnt from emp where id = empid;
 if cnt > 0 Then
   DBMS_OUTPUT.PUT_LINE('user Exists');
 else
   DBMS_OUTPUT.PUT_LINE('User doesnt exist');
 end if;
END;
/

或者,如果您想获得有关该员工的一些信息:

DECLARE
 empid  employees.employee_id%type := &id;
 empname employees.employee_name%type;
BEGIN
 select name into empname from employees where employee_id = empid;
 DBMS_OUTPUT.PUT_LINE('user Exists name='||empname);
EXCEPTION
 WHEN NO_DATA_FOUND THEN
   DBMS_OUTPUT.PUT_LINE('User doesnt exist');
END;
/