加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Oracle中的过程中选择语句

发布时间:2020-12-12 15:12:40 所属栏目:百科 来源:网络整理
导读:抱歉问这个问题,但这是因为以前给出的答案都不足以让我明白.我想编写一个返回表中所有列的存储过程.作为一个广告hod查询,我只是写 SELECT * FROM EMPLOYEES 但是在这里,我得到一个错误,提示我提供INTO子句,我不明白为什么和如何.有人会解释我将如何在上述情
抱歉问这个问题,但这是因为以前给出的答案都不足以让我明白.我想编写一个返回表中所有列的存储过程.作为一个广告hod查询,我只是写
SELECT * FROM EMPLOYEES

但是在这里,我得到一个错误,提示我提供INTO子句,我不明白为什么和如何.有人会解释我将如何在上述情况下以及当我要返回一个列值(多行时) ).

具有SQL Server背景的人员用于编写返回整个查询结果的存储过程,因此尝试编写如下所示的PL / SQL过程:
procedure get_emps is
begin
    -- this will NOT work!
    select * from emp;
end;

不幸的是,这不是那么简单.可能在PL / SQL中最近的等价物是返回参考游标的函数:

function get_emps return sys_refcursor is
    rc sys_refcursor;
begin
    open rc for
        select * from emp;
    return rc;
end;

你可以从这样的调用程序中调用它:

declare
    cur sys_refcursor;
    emp_rec emp%rowtype;
begin
    cur := get_emps;
    loop
        fetch cur into emp_rec;
        exit when cur%notfound;
    end loop;
    close cur;
end;

或者在SQL Plus中你可以做:

var rc refcursor
:rc := get_emps;
print rc

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读