【问题标题】:PL/SQL Procedure/function with params to return a table from(of) a select query带有参数的 PL/SQL 过程/函数从选择查询返回表
【发布时间】:2020-12-01 11:17:49
【问题描述】:

如何创建带参数的 (Oracle) 函数/过程以在块内返回由 select 语句返回的表

尝试使用 refcursor 获取数据如下,全部在一行中

{, } 代替表格格式

image link for the sample output

附:我对 PL/SQL 很陌生

【问题讨论】:

    标签: oracle function plsql procedure


    【解决方案1】:

    一种选择是返回 refcursor。这是一个例子:

    SQL> create or replace function f_test (par_deptno in number)
      2    return sys_refcursor
      3  is
      4    rc sys_refcursor;
      5  begin
      6    open rc for select * from emp where deptno = par_deptno;
      7    return rc;
      8  end;
      9  /
    
    Function created.
    
    SQL> select f_test(10) from dual;
       
    F_TEST(10)
    --------------------
    CURSOR STATEMENT : 1
    
    CURSOR STATEMENT : 1
    
         EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
    ---------- ---------- --------- ---------- -------- ---------- ---------- ----------
          7782 CLARK      MANAGER         7839 09.06.81       2450                    10
          7839 KING       PRESIDENT            17.11.81      10000                    10
          7934 MILLER     CLERK           7782 23.01.82       1300                    10
    
    
    SQL>
    

    【讨论】:

    • -我已经尝试过这个并且绝对有效,但不确定所有数据都在 1 个单元格而不是一个表格中,例如:{,}
    • 细胞?什么细胞?如果您想将数据导出到例如MS Excel(具有“单元格”),一个简单的选项是将查询结果假脱机到 CSV 文件中 - 这是纯 SQL。或者,如果您想使用 PL/SQL,您可以连接列值并用分号(或其他分隔符)分隔它们,并使用 DBMS_OUTPUT.PUT_LINE 来显示这些行。或者,使用 UTL_FILE 包创建输出文件。或者,使用提供导出到 Excel 的 GUI 工具(如 SQL Developer 或 TOAD)。
    • 单元格我的意思是只有一列...(只有一行和一列),结果是.....{,}。我不是指任何输出文件 excel - 谢谢
    • 恐怕我听不懂你在说什么,抱歉。如果可能的话,提供一个例子——就像我做的那样;编辑问题并将其发布到那里。
    • {, ...... } 这是响应的显示方式而不是表格格式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多