首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从函数中检索记录

从函数中检索记录
EN

Stack Overflow用户
提问于 2020-03-06 05:43:32
回答 1查看 88关注 0票数 0

我想要一个函数从表雇员中检索信息,然后将这些信息填充到记录中,将记录返回给调用方。在该块中,使用ID (114)调用F6,并打印通过函数调用接收的信息。

代码语言:javascript
运行
复制
 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编译错误。

*行动:

EN

回答 1

Stack Overflow用户

发布于 2020-03-09 11:09:28

我认为你的功能可以简单得多。

您可以使用函数从表中获取数据,并将其存储到记录中。然后返回完整的记录。并打印出每一列的数据。

也许这会给你一个主意:

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

https://stackoverflow.com/questions/60558223

复制
相关文章

相似问题

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