如何在过程中的表中插入游标值

Posted

技术标签:

【中文标题】如何在过程中的表中插入游标值【英文标题】:How to insert cursor value in a table withing procedure 【发布时间】:2017-05-03 08:53:16 【问题描述】:

我是 oracle 的新手。我想将光标的某些字段放入不同的表中。检查了网上可用的可能选项,但对我没有用。

    PROCEDURE get_emp_info (p_nbr_rec     IN     NUMBER DEFAULT 10,
                        p_emp_id      IN     NUMBER DEFAULT NULL,
                        p_user_id     IN     VARCHAR2 DEFAULT NULL,
                        rc_emp_info      OUT ref_cursor)
IS
BEGIN
   OPEN rc_emp_info FOR
      SELECT e.employee_id,
             e.user_id,
             e.first_name,
             e.preferred_name,
             e.last_name,
             e.manager_name,
             FROM employee e
   WHERE
   (p_user_id is NULL OR e.user_id = LOWER(p_user_id) )
end get_emp_info;

请帮助并提出任何解决方案。 提前致谢。

【问题讨论】:

请说明您的需求。这个过程在表格上打开一个光标,你需要什么来代替?一些示例数据和所需的结果也会很有用。 【参考方案1】:
    PROCEDURE get_emp_info (p_nbr_rec     IN     NUMBER DEFAULT 10,
                            p_emp_id      IN     NUMBER DEFAULT NULL,
                            p_user_id     IN     VARCHAR2 DEFAULT NULL,
                            rc_emp_info      OUT ref_cursor)
    IS
    BEGIN
-- Not sure why so many inputs when you are not using it
       OPEN rc_emp_info FOR
          SELECT e.employee_id,
                 e.user_id,
                 e.first_name,
                 e.preferred_name,
                 e.last_name,
                 e.manager_name
                 FROM employee e
       WHERE
       (p_user_id is NULL OR e.user_id = LOWER(p_user_id));
       -- Not sure why are you checking p_user_id is NULL
       loop
       fetch rc_emp_info into var1,var2,var3,var4,var5,var6;
       exit when rc_emp_info%notfound;
      -- here you do whatever you want with the variables
       end loop;
    end get_emp_info;

【讨论】:

以上是关于如何在过程中的表中插入游标值的主要内容,如果未能解决你的问题,请参考以下文章

如何获取ListView的项目onItemClick的游标值?

如何在动态SQL(SQL Server)中的Select语句中使用游标值

如何使用 %ROWTYPE 获取游标值

将修改后的表中的游标用于相同的 PL/SQL 过程

如何将数据插入到mysqli中的表中?

如何使用 SQL 或 PLSQL 将多行数据插入 Oracle 中的表中?