pl/sql函数如何返回多行数据

news2025/1/9 17:11:04
用游标即可:
 

SQL code ?

1

2

3

4

5

6

7

8

9

10

11

12

Create  or  REPLACE  FUNCTION  getCursorList(

      P_USER_ID_I           IN    VARCHAR2               --接收输入参数

)

RETURN     SYS_REFCURSOR

AS

      P_RESULT_SET_O          SYS_REFCURSOR;  --返回游标

      X_SQL VARCHAR2(200);

BEGIN

       X_SQL := 'select user_id,user_name,email from user_mst where user_id like ' '%'  || P_USER_ID_I || '%' '' ;    --生成SQL语句

       OPEN  P_RESULT_SET_O  FOR  X_SQL;

       RETURN  P_RESULT_SET_O;     --返回游标

END  getCursorList;

对我有用[0]  丢个板砖[0]  引用 |  举报 |  管理

关注

suiziguo

suiziguo

本版等级: 

T7

Blank

  

Blank

  

Blank

#2 得分:5回复于: 2010-01-27 10:05:39

SQL> create or replace procedure emp_dept
  2     (pi_deptno    IN       emp.deptno%TYPE,
  3      po_result    OUT      SYS_REFCURSOR)
  4  IS
  5  begin
  6     OPEN po_result FOR
  7        SELECT * FROM emp WHERE deptno=pi_deptno;
  8  end ;
  9  /

过程已创建。

SQL> var r_cur refcursor
SQL> exec emp_dept(10,:r_cur);

PL/SQL 过程已成功完成。

SQL> print :r_cur

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
---------- ---------- --------- ---------- -------------- ---------- ----------
    DEPTNO
----------
      7782 CLARK      MANAGER         7839 09-6月 -81           2450
        10

      7839 KING       PRESIDENT            17-11月-81           5000
        10

      7934 MILLER     CLERK           7782 23-1月 -82           1300
        10


SQL>



pl/sql developer里调试,单独查看游标结果集。

对我有用[0]  丢个板砖[0]  引用 |  举报 |  管理

关注

csm810902

csm810902

本版等级: 

T1

#3 得分:0回复于: 2010-01-27 10:19:16

suiziguo你好,存储过程在pl/sql developer一般是传入参数调试,然后在数据库里看结果,这里执行过程后,如何在pl/sql developer上看结果(这里是输出10部门的结果)?写函数还真不知道写呢

对我有用[0]  丢个板砖[0]  引用 |  举报 |  管理

关注

suiziguo

suiziguo

本版等级: 

T7

Blank

  

Blank

  

Blank

#4 得分:0回复于: 2010-01-27 10:24:36

pl/sql测试窗,下面有所有参数(包括IN and OUT)。

在测试窗运行过程后,下面的参数栏里有个变量为po_result的值一栏里是<Cursor>
点击其右边的...按钮,就可以在新窗口里看见你想要的结果集。

对我有用[0]  丢个板砖[0]  引用 |  举报 |  管理

关注

suiziguo

suiziguo

本版等级: 

T7

Blank

  

Blank

  

Blank

#5 得分:5回复于: 2010-01-27 10:30:38

函数在PL/SQL里调试也一样。以下是SQLPLUS里调试:

SQL> CREATE OR REPLACE FUNCTION func_emp_dept
  2        (pi_deptno    IN      emp.deptno%TYPE)
  3  RETURN SYS_REFCURSOR
  4  IS
  5     po_result   SYS_REFCURSOR;
  6  BEGIN
  7     OPEN po_result FOR
  8        SELECT * FROM emp WHERE deptno=pi_deptno;
  9     RETURN po_result;
 10  END;
 11  /

函数已创建。

SQL> select func_emp_dept(10) from dual;

FUNC_EMP_DEPT(10)
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
---------- ---------- --------- ---------- -------------- ---------- ----------
    DEPTNO
----------
      7782 CLARK      MANAGER         7839 09-6月 -81           2450
        10

      7839 KING       PRESIDENT            17-11月-81           5000
        10

      7934 MILLER     CLERK           7782 23-1月 -82           1300
        10



SQL>

对我有用[0]  丢个板砖[0]  引用 |  举报 |  管理

关注

csm810902

csm810902

本版等级: 

T1

#6 得分:0回复于: 2010-01-27 10:41:32

嗯,搞定,谢谢你们

对我有用[0]  丢个板砖[0]  引用 |  举报 |  管理

关注

csm810902

csm810902

本版等级: 

T1

#7 得分:0回复于: 2010-01-27 10:55:37

对了,我把函数改成这样会报错:
create or replace function func_emp_dept(v_deptno IN emp.deptno%TYPE)
  return cursor IS

  c_cursor cursor;
BEGIN
  OPEN c_cursor FOR
    SELECT * FROM emp WHERE deptno = v_deptno;
  RETURN c_cursor;
END;
说必须申明表标CURSOR,这怎么理解?

对我有用[0]  丢个板砖[0]  引用 |  举报 |  管理

关注

suiziguo

suiziguo

本版等级: 

T7

Blank

  

Blank

  

Blank

#8 得分:2回复于: 2010-01-27 10:57:38

SYS_REFCURSOR是ORACLE内置ref cursor类型。
而cursor,只是一个关键字。

对我有用[0]  丢个板砖[0]  引用 |  举报 |  管理

关注

csm810902

csm810902

本版等级: 

T1

#9 得分:0回复于: 2010-01-27 11:08:09

cursor不是游标类型吗?不能写return cursor? c_cursor cursor这样申明一个游标类型的实例c_cursor  不是吗?我是这样理解的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/845319.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ctfshow-web7

0x00 前言 CTF 加解密合集 CTF Web合集 0x01 题目 0x02 Write Up 通过尝试&#xff0c;发现是数字型的注入&#xff0c;并且同样是过滤了空格 判断字段 获取一下flag即可 1/**/union/**/select/**/1,flag,3/**/from/**/web7.flag#&passworda以上

web 3d场景构建+three.js+室内围墙,仓库,楼梯,货架模型等,第一人称进入场景案例

翻到了之前的一个案例&#xff0c;基于three.js做的仓库布局模拟&#xff0c;地图元素除了大模型外&#xff0c;其他都是通过JSON数据解析动态生成的&#xff0c;例如墙体&#xff0c;柱子门口&#xff0c;地标等&#xff0c;集成了第一人称的插件可以第一人称进入场景有需要的…

FreeRTOS源码分析-10 互斥信号量

目录 1 事件标志组概念及其应用 1.1 事件标志组定义 1.2 FreeRTOS事件标志组介绍 1.3 FreeRTOS事件标志组工作原理 2 事件标志组应用 2.1 功能需求 2.2 API 2.3 功能实现 3 事件标志组原理 3.1 事件标志组控制块 3.2 事件标志组获取标志位 3.3 等待事件标志触发 3.4…

Mid journey V5.2 终极指南

MidJourney 是迄今为止最高质量的人工智能文本到图像生成器之一。我想你们中的大多数人都可以创建一些简单的提示&#xff0c;例如“留着胡子的男人”或“森林里的狼”&#xff0c;并能够在那里生成一些相当不错的图像......但是...... 如果你想用Midjourney创造出杰出的艺术&a…

Spring MVCSpring Boot

文章目录 Spring MVC什么是MVC模式Spring MVC优点SpringMVC 运行流程SpringMVC组件SpringMVC常用的注解有哪些SpringMVC的拦截器和过滤器有什么区别&#xff1f;执行顺序是什么 SpringBoot对SpringBoot的理解Spring和SpringBoot的关系&#xff1f;SpringBoot有哪些核心注解Spri…

IMv1.0

一、背景内容 总结golang基础内容&#xff0c;通过一个实例实时 IM系统简进行总结知识 二、简要的图 简要说明&#xff1a; 1.在server.go中&#xff0c;创建一个Newserver返回server指针的结构体 2.正对这个指针结构体实现两个方法 Handler&#xff08;处理方法&#xff0…

Vue2与Vue3—引入DataV

一、文档参考 vue2使用DataV文档 vue3使用DataV文档 二、开始 1、npm安装DateV 支持npm、pnpm、yarn V2&#xff1a; npm install jiaminghi/data-viewV3&#xff1a; npm install kjgl77/datav-vue32、全局引入DataV // main.ts中全局引入 v2: import dataV from jiaminghi/…

nginx+flask+uwsgi部署遇到的坑

文章目录 1.环境&#xff1a;2.uwsgi_conf.ini具体配置内容3.nginx 具体配置4.具体命令(注意使用pip3命令安装)5.服务异常排查 1.环境&#xff1a; centos8 uWSGI 2.0.22 gmssl 3.2.2 nginx version: nginx/1.18.0 项目目录&#xff1a; 2.uwsgi_conf.ini具体配置内容 [uws…

Linux CEF(Chromium Embedded Framework)源码下载编译详细记录

Linux CEF&#xff08;Chromium Embedded Framework&#xff09;源码下载编译 背景 由于CEF默认的二进制分发包不支持音视频播放&#xff0c;需要自行编译源码&#xff0c;将ffmpeg开关打开才能支持。这里介绍的是Linux平台下的CEF源码下载编译过程。 前置条件 下载的过程非…

Idea小操作

Idea操作 idea提取内容构成一个方法 idea提取内容构成一个方法

git clean 命令

git clean -n //显示要删除的文件&#xff0c;clean的演习&#xff0c;告诉哪些文件删除&#xff0c;只是一个提醒。 git clean -dn //显示要删除的文件和目录 git clean -f //删除未追踪的文件 git clean -dff //删除未追踪的目录 git clean -df //清除所有未跟踪文件&#xf…

【MySQL】聚合函数与分组查询

文章目录 一、聚合函数1.1 count 返回查询到的数据的数量1.2 sum 返回查询到的数据的总和1.3 avg 返回查询到的数据的平均值1.4 max 返回查询到的数据的最大值1.5 min 返回查询到的数据的最小值 二、分组查询group by2.1 导入雇员信息表2.2 找到最高薪资和员工平均薪资2.3 显示…

小型双轮差速底盘机器人实现红外跟随功能

1. 功能说明 本文示例将实现R023样机小型双轮差速底盘跟随人移动的功能。在小型双轮差速底盘前方按下图所示安装3个 近红外传感器&#xff0c;制作一个红外线发射源&#xff0c;实现当红外发射源在机器人的检测范围内任意放置或移动时&#xff0c;机器人能追踪该发射源。 2. 电…

ffmpeg工具实用命令

说明&#xff1a;ffmpeg是一款非常好用的媒体操作工具&#xff0c;包含了许多对于视频、音频的操作&#xff0c;有些视频播放器里面实际上就是使用了ffmpeg。本文介绍ffmpeg的使用以及一些较为实用的命令。 安装 ffmpeg是命令行操作的&#xff0c;不需要安装&#xff0c;可在…

ADSP21569之开发笔记(一)

CLDP烧写SigmStudio融合程序到Flash实现脱机步骤&#xff1a; 1、配置CCES属性&#xff0c;生成ldr文件。 ADI的flash烧写都需要驱动&#xff0c;这个驱动并不是通用的&#xff0c;每一个型号的flash都会有自己对应的驱动&#xff0c;ADI提供了一个例程&#xff0c;即IS25LP512…

CS61B Spring 2021 proj2 gitlet

Gitlet 项目简介整体结构对象概念&#xff08;object concept&#xff09;追踪文件&#xff08;track file&#xff09;分支管理&#xff08;branch management&#xff09;持久化目录结构&#xff08;folder structure&#xff09; 命令功能与具体实现initaddcommitrmloggloba…

设计模式之三大类

目录 设计模式分类 创建型模式(Creational Patters) 结构型模式(Structural Patterns) 行为型模式(Behavioral Patterns) 命令模式(The Command Pattern) 适配器模式 Object and Class Adapters 设计模式分类 1.创建型模式(Creational Patters) Fatory Method - 本质&…

直线电机模组在激光切割机上的作用

激光切割机是将从激光器发射出的激光&#xff0c;经光路系统&#xff0c;聚焦成高功率密度的激光束。激光束照射到工件表面&#xff0c;使工件达到熔点或沸点&#xff0c;同时与光束同轴的高压气体将熔化或气化金属吹走。激光切割加工是用不可见的光束代替了传统的机械刀&#…

一起学数据结构(3)——万字解析:链表的概念及单链表的实现

上篇文章介绍了数据结构的一些基本概念&#xff0c;以及顺序表的概念和实现&#xff0c;本文来介绍链表的概念和单链表的实现&#xff0c;在此之前&#xff0c;首先来回顾以下顺序表的特点&#xff1a; 1.顺序表特点回顾&#xff1a; 1. 顺序表是一组地址连续的存储单元依次存…

<STM32>STM32F103ZET6-可调参数定时器1互补PWM输出

&#xff1c;STM32&#xff1e;STM32F103ZET6-可调参数定时器1互补PWM输出 一 基础工程 本例基础工程以正点原子战舰V3开发板配套 库函数 开发例程《实验9 PWM输出实验》&#xff1b; 在此例程基础上进行 定时器1互补PWM输出。 二 代码修改 基于例程&#xff0c;只需修改ma…