带有参数的 PL/SQL 过程/函数从选择查询返回表

技术标签:

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

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

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

, 代替表格格式

image link for the sample output

附:我对 PL/SQL 很陌生

【问题讨论】:

【参考方案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 - 谢谢 恐怕我听不懂你在说什么,抱歉。如果可能的话,提供一个例子------就像我做的那样;编辑问题并将其发布到那里。 , ...... 这是响应的显示方式而不是表格格式

以上是关于带有参数的 PL/SQL 过程/函数从选择查询返回表的主要内容,如果未能解决你的问题,请参考以下文章

从基于 PL/SQL 函数体返回 SQL 查询的 Oracle APEX 5 经典报告下载到 Excel 选项,

从 PL/SQL 中的查询加硬编码变量返回用户定义的表

Oracle Pl/sql 从多个查询中返回一个游标

带有 where 条件的 PL/SQL 更新查询作为带有一些空值的选择查询

ORACLE PL/SQL:使用多个参数调用存储过程函数(DML 查询)

Oracle PL/SQL 中基于参数的选择查询

相关推荐
-SGlow-2 小时前
MySQL相关概念和易错知识点(3)(表内容的CURD、内置函数)
linux·运维·服务器·数据库·mysql
飞翔的佩奇2 小时前
基于SpringBoot+MyBatis+MySQL+VUE实现的经方药食两用服务平台管理系统(附源码+数据库+毕业论文+部署教程+配套软件)
数据库·vue.js·spring boot·mysql·毕业设计·mybatis·经方药食两用平台
bing_1583 小时前
在多租户或多服务共享 Redis 时,如何做逻辑隔离或权限控制?
数据库·redis·缓存
ChaITSimpleLove3 小时前
PostgreSQL 中删除指定数据库下的所有表结构
数据库·postgresql·bash·sql 脚本·.net npgsql
孫治AllenSun5 小时前
【Mysql】字段隐式转换对where条件和join关联条件的影响
数据库·mysql·oracle
生涯にわたる学び5 小时前
数据库02 网页html01 day44
数据库·html
2301_793086876 小时前
Mysql group by
数据库·mysql
jllllyuz6 小时前
Spring中的事务是如何实现的
数据库·sql·spring
wangmengxxw7 小时前
Spring-常用注解
java·数据库·spring·注解
m0_747266097 小时前
contentprovider实验+SQLite数据库的实现
数据库·sqlite