【问题标题】:To get data from Stored Procedure having without parameter从没有参数的存储过程中获取数据
【发布时间】:2017-07-12 07:59:23
【问题描述】:

我有一个不带参数的存储过程proc1。我想从此存储过程中提取数据。我怎么能得到那个?你能帮帮我吗?

存储过程:

create procedure proc1 
as
begin
    select e_id, e_nm, e_sal 
    from emp 
    where e_id like 'e%';
end proc1;

【问题讨论】:

  • 您应该更具体一些 - 以获得一些答案......该程序的目的是什么?你是写存储过程的人吗?你想提取什么样的数据?
  • @Plirkee 在此过程中有一些 SQL 语句,但没有参数。如何从该存储过程中获取或提取数据,或者如何从具有参数的存储过程中获取数据
  • 如果您不在问题中发布您的程序代码,讨论此问题将不会有成果。
  • @Shahin 发布代码并解释你想提取什么(期望的输出)...否则我怀疑你会得到任何有用的答案。
  • 如果没有参数,您无法从过程中获取数据。您可以将游标作为输出参数返回,也可以将一些标量值作为输出参数返回,但最后您需要参数。

标签: oracle stored-procedures plsql


【解决方案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 GuideTom Kyte's BlogOracle Base 等中的隐式结果集。

【讨论】:

    【解决方案2】:

    这是一种可能的解决方案:

    声明:

    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;
    

    您有什么特别需要退出程序的吗?

    干杯

    【讨论】:

    • 貌似有参数;)
    【解决方案3】:
    1. 您为此查询创建了一个视图。 (推荐)
    2. 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;
      

    另一种方式;你创建一个函数。因为函数输出和输入。这个函数;

    例如Create an Oracle function that returns a table

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多