I have a stored procedure proc1
without parameters. I want to extract data from this stored procedure. How can I get that? Could you help me?
Stored procedure:
create procedure proc1
as
begin
select e_id, e_nm, e_sal
from emp
where e_id like 'e%';
end proc1;
答案 0 :(得分:1)
您可以在Oracle 12.1或更高版本中执行此操作:
create or replace procedure demo
as
rc sys_refcursor;
begin
open rc for select * from dual;
dbms_sql.return_result(rc);
end demo;
这需要Oracle 12.1或更高版本的客户端/驱动程序来处理隐式结果集。
有关详细信息,请参阅Oracle 12.1 New Features Guide,Tom Kyte's Blog,Oracle Base等中的隐式结果集。
答案 1 :(得分:0)
这是一个可能的解决方案:
<强>声明:强>
create procedure proc1 (emp_row IN OUT emp%rowtype)
as
begin
select * --e_id, e_nm, e_sal
into emp_row
from emp
where e_id like 'e%';
end proc1;
使用案例
DECLARE
l_emp_row emp%rowtype;
BEGIN
proc1(l_emp_row);
-- Here you can access every column of table "emp", like so:
-- dbms_output.put_line('e_id: ' || to_char(l_emp_row.e_id));
-- dbms_output.put_line('e_nm: ' || to_char(l_emp_row.e_nm));
-- dbms_output.put_line('e_sal: ' || to_char(l_emp_row.e_sal));
END;
您需要退出程序吗?
干杯
答案 2 :(得分:0)
Oracle程序不返回任何数据。所以,你没有看到任何结果。您的结果获得缓冲但不是打印屏幕。如果您需要一个过程,请在另一个表中插入所有数据。
create procedure proc1
as
begin
insert into new_table select e_id, e_nm, e_sal from emp where e_id like 'e%';
end proc1;
另一种方式;你创建一个功能。因为功能输出和输入。这个功能;