我想要一个函数从表雇员中检索信息,然后将这些信息填充到记录中,将记录返回给调用方。在该块中,使用ID (114)调用F6,并打印通过函数调用接收的信息。
DECLARE
TYPE empdetail IS RECORD (
dept_id NUMBER,
salary NUMBER,
first_name VARCHAR2(20),
last_name VARCHAR2(25));
FUNCTION hw2(emp_id IN NUMBER) RETURN empdetail
IS
rec1 empdetail;
avg_sal employees.salary%TYPE;
BEGIN
select department_id, salary, first_name, last_name INTO rec1
from employees
where employee_id = emp_id;
avg_sal := salary / 1;
return avg_Sal;
end hw2;
/
BEGIN
emp_no employees.employee_id%TYPE : = 114;
emp_details := f6(emp_no);
DBMS_OUTPUT.PUT_LINE(
'employee details are: ' ||
emp_details.emp_id || ', ' ||
emp_details.dept_id || ', '||
emp_details.salary || ', ' ||
emp_details.first_name || ', ' ||
emp_details.last_name);
END;
/这会产生错误:
ORA-06550:第22行,第0列:
请-00103:当期望下列之一时遇到符号“文件结束”:
开始功能实用化过程
06550。00000 -“行%s,列%s:\n%s”
*原因:通常是PL/SQL编译错误。
*行动:
发布于 2020-03-09 11:09:28
我认为你的功能可以简单得多。
您可以使用函数从表中获取数据,并将其存储到记录中。然后返回完整的记录。并打印出每一列的数据。
也许这会给你一个主意:
CREATE OR REPLACE FUNCTION hw2(emp_id IN NUMBER)
RETURN Employees%ROWTYPE
IS
CURSOR cEmployee IS
SELECT * FROM Employees WHERE Id = emp_id;
rEmployee cEmployee%ROWTYPE;
BEGIN
OPEN cEmployee;
FETCH cEmployee INTO rEmployee;
CLOSE cEmployee;
RETURN rEmployee;
END;
/
DECLARE
rEmployee Employees%ROWTYPE;
BEGIN
rEmployee := hw2(emp_id => 1);
-- Print data
DBMS_OUTPUT.PUT_LINE('Name:' || rEmployee.Name);
END;
/https://stackoverflow.com/questions/60558223
复制相似问题