Пустой вывод после объявления процедуры - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь определить, почему eID ничего не возвращает во время вывода. Процедура и декларация ниже.

Особой проблемой является "dbms_output.put_line ('Информация для сотрудника #' || eID);

Я ожидаю, что он вернет введенный eID. Поэтому в приведенном ниже примере я ввел '1 ', поэтому я ожидаю, что на выходе также появится' 1 '.

CREATE OR REPLACE PROCEDURE get_empDetails(
eID IN EMPLOYEES.employeeID%type,
fName OUT EMPLOYEES.firstName%type,
lName OUT EMPLOYEES.lastName%type,
dNAME OUT DEPARTMENTS.departmentNAME%type)
AS 
BEGIN
  SELECT firstName, lastName, departmentNAME 
    INTO fName, lName, dNAME
    FROM EMPLOYEES e
    JOIN DEPARTMENTS d
      ON e.departmentID = d.departmentID 
   WHERE e.employeeID = eID;
 EXCEPTION
      WHEN NO_DATA_FOUND THEN
      DBMS_OUTPUT.PUT_LINE('Invalid employee ID');
END;
----
declare
eID number(20);
fname varchar(20); 
lname varchar(20);
deptName varchar(20);
begin
get_empDetails(1, fname,lname,deptName);
dbms_output.put_line('Information for employee #'|| eID);
dbms_output.put_line('Employee Full name : '||fname ||' '|| lname);
dbms_output.put_line('Department Name : '||deptName);
end;
---
Result: 
Statement processed.
Information for employee #
Employee Full name : Alice Smith
Department Name : Human Resources

1 Ответ

0 голосов
/ 10 октября 2019

Вам нужно передать в eiD в качестве параметра. вы передаете буквальное значение 1. В этом случае EID равен нулю.

declare
eID number(20);
fname varchar(20); 
lname varchar(20);
deptName varchar(20);
begin
get_empDetails(eID, fname,lname,deptName);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...