oracle在存储过程里面调用其它的存储过程(包含游标)

【Oracle】存储过程和触发器 以命令方式创建存储过程创建存储过程使用语句,语法格式为:CREATE [OR REPLACE] PROCEDURE <过程名> /*定义过程名*/[ (<参数名> <参数类型> <数据类型> [ DEFAULT <默认值>] [, …n])] /*定义参数类型及属性*/[<变量声明>] /*变量声明部分*/BEGIN。 阅读详情

第一种情况是返回的游标是某个具体的表或视图的数据,如

CREATE OR REPLACE PROCEDURE P_TESTA ( 
PRESULT OUT SYS_REFCURSOR 
) 
AS 
BEGIN 
OPEN PRESULT FOR SELECT * FROM USERS; 
END P_TESTA;

其中USERS就是数据库中一个表。在调用的时候只要声明一个该表的ROWTYPE类型就可以了:

CREATE OR REPLACE PROCEDURE P_TESTB 
AS 
VARCURSOR SYS_REFCURSOR; 
R USERS%ROWTYPE; 
BEGIN 
P_TESTA(VARCURSOR); 
LOOP 
FETCH VARCURSOR INTO R; 
EXIT WHEN VARCURSOR%NOTFOUND; 
DBMS_OUTPUT.PUT_LINE(R.NAME); 
END LOOP; 
END P_TESTB;

第二种情况,我们返回的不是表的所有的列,或许只是其中一列或两列,如:

CREATE OR REPLACE PROCEDURE P_TESTA ( 
PRESULT OUT SYS_REFCURSOR 
) 
AS 
BEGIN 
OPEN PRESULT FOR SELECT ID,NAME FROM USERS; 
END P_TESTA;

这里我们只返回了USERS表的ID,NAME这两个列,那么调用的时候也必须做相应的修改:

CREATE OR REPLACE PROCEDURE P_TESTB 
AS 
VARCURSOR SYS_REFCURSOR; 
CURSOR TMPCURSOR IS SELECT ID,NAME FROM USERS WHERE ROWNUM=1; 
R TMPCURSOR%ROWTYPE; 
BEGIN 
P_TESTA(VARCURSOR); 
LOOP 
FETCH VARCURSOR INTO R; 
EXIT WHEN VARCURSOR%NOTFOUND; 
DBMS_OUTPUT.PUT_LINE(R.ID); 
END LOOP; 
END P_TESTB;

与之前不同的是我们声明了一个游标类型的变量TMPCURSOR ,注意TMPCURSOR 的结构必须与存储过程P_TESTA 返回的游标结构一致,否则就会出现错误。同理只要保持两个游标类型结构一致,就可以实现自由调用。


原文链接:http://www.jb51.net/article/20160.htm

c#中利用Oracle.DataAccess.dll调用数据库存储过程,包含游标返回的代码示例 没什么好说的,直接见代码: private void btn_start_Click(object sender, EventArgs e) { OracleConnection conn = null; try { //获取与数据库的连接对象 c... 阅读详情

相关推荐

Laravel中调用oracle的存储过程(带out和cursor)

 背景:调用oracle中的存储过程 存储过程有入参in和出参out,出参有游标cursor 目标:执行调用存储过程,获取返回值,以及游标里的内容。 $tns = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 1xx.1xx.1xx.xx7) (PORT =xxx)) (CONNECT_DATA = (...

weixin_38682852的博客 1065

Oracle存储过程中,调用另外一个存储过程打印日志

Oracle存储过程中,调用另外一个存储过程打印日志

小马的专栏 2500

oracle 在一个存储过程中调用另一个返回游标的存储过程

第一种情况是返回的游标是某个具体的表或视图的数据,如: SQL-Code: 代码如下: CREATE OR REPLACE PROCEDURE P_TESTA ( PRESULT OUT SYS_REFCURSOR ) AS BEGIN OPEN PRESULT FOR SELECT * FROM USERS; END P_TESTA; 其中USERS就是数据库中一个表。在调用的时候只要声明一个该表的ROWTYPE类型就可以了: SQL-Code: 代码如下: CREATE OR REPLACE PROCEDURE P_TESTB AS VARCURSOR SYS_REFCURSOR;

oracle存储过程中调用另一个存储过程_OceanBase 2.0支持“存储过程”的实现原理...

引言PL/SQL(存储过程)是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL),从Ada语言发展而来。PL/SQL是关系数据库对SQL语句的扩展,在普通SQL语句的基础上增加了编程语言的特点,把数据操作和查询语句组织在PL/SQL的过程化代码中,通过逻辑判断、循环等操作实现复杂的功能。使用PL/SQL可以编写具有很多高级功能的程序,能够把业务逻辑封装在数据库内部...

weixin_39858124的博客 2921

Origin作图——等高线图

最近做一个测试数据图,开始想通过用热图来展示,结果发现热图有很多的小方块,很难呈现出最好的效果,因为数据是有一层一层的递进效果,因此经过尝试后,发现等高线图是个好选择。 热图展示效果如下:其中有很多的小方块不适合,热图制图方法前面有记录。 下面展示等高线图制作方法。首先是导入数据,可以从excal导入,也可以直接复制进去。等方法。 选中要展示的数据,绘图----等高线图 选中箭头,确定。 双击图像,点击线,我们需要把线隐藏了. 双击图像,我们需要调色板,根据自己的选择,一般用调色板的颜色。

qq_42278015的博客 1万+

手把手教你用vLLM在昇腾910B上部署Qwen3-Embedding-8B模型(保姆级避坑指南)

本文详细介绍了如何在昇腾910B芯片上使用vLLM推理引擎部署Qwen3-Embedding-8B模型的全流程,包括环境准备、vLLM-ascend定制化安装、模型获取与校验、环境变量配置、服务启动参数优化、性能压测及生产级部署建议。特别针对昇腾生态的开发者,提供了保姆级的避坑指南和实用技巧,帮助实现高效稳定的模型部署。

weixin_28726671的博客 466

Oracle存储过程的几种调用方式

记录:284 场景:Oracle存储过程调用方式,包括PL/SQL的SQL窗口中调用、在PL/SQL的命令窗口、在Procedures菜单列表中选中存储过程名称右键点击测试、在Package Bodies菜单列表中选中存储过程名称右键点击测试、在Jobs菜单列表选中已经配置Job的存储过程右键中点击运行、Java代码调用存储过程。.........

zhangbeizhen18的博客 2万+

智能车竞赛环岛处理全解析:从图像识别到状态机控制

在嵌入式系统与自动控制领域,状态机是管理复杂系统行为、实现清晰逻辑流的核心设计模式。其原理在于定义一组有限的状态,以及触发状态迁移的事件和条件,从而将连续、模糊的过程分解为离散、确定的阶段。这种技术在机器人导航、工业自动化等场景中价值显著,尤其适用于需要应对多种场景、做出序列化决策的场合。在智能车竞赛中,赛道元素识别与路径跟踪是典型应用,其中环岛作为连续闭环的复杂场景,对系统的鲁棒性和决策连贯性提出了更高要求。通过图像处理提取赛道边线、宽度和曲率等特征,结合陀螺仪等传感器数据,可以构建一个专门处理环岛的状态

weixin_34033624的博客 563

oracle中pkg的游标,Oracle带游标的存储过程在plus中的调用实例

之前在帖子 http://www.linuxidc.com/Linux/2012-07/65117.htm里回答了一些网友的关于怎么穿件一个返回记录集合的存储过程。想必很多网友已经很明白了,这里就不多讲了。怎么调用含游标的存储过程在sqlplusOracle怎么执行带游标的过程?给你一个例子--游标使用(游标其实是一个放入内存临时表)declaremoney cms3_simcard.card_...

weixin_42511206的博客 266

【Unity】 预制体Prefab使用说明

在 Unity 中,Prefab 是一个可以预先制作并重复使用的 GameObject 或组件集合,Prefab 中的 GameObject 可以有子对象和其他组件。

灵境引路人 2850

ClaudeCode入门01-环境安装(小白入门:手把手教你配置,超简单的一种接入方式)

文手把手教你从零搭建 Claude Code 开发环境。针对国内网络现状,我们采用 OpenRouter + Claude Code Router 的方案,支持支付宝/微信充值,无需科学上网即可完成配置。内容涵盖 Node.js 安装(macOS/Windows/Linux)、OpenRouter 注册与充值、Claude Code 和 Router 安装配置,以及一键启动脚本的编写。跟着截图一步步操作,10分钟搞定全部环境!

yueyeguzhuo的专栏 281

存储过程和游标

一、存储过程的使用 以下的文章主要是通过相关的的代码来引出pl/sql中创建Oracle procedure并调用的实际应用方案,如果你想对pl/sql中创建Oracle procedure并调用有想了解的欲望的话,以下的文章就会给你提供相关的知识点。 Create tabl

yaozeng_cui的专栏 1449

【WorkBuddy专栏】完结篇暨付费专栏总目录(内容继续更新中)

【WorkBuddy专栏】完结篇和付费内容总目录

AI人人懂 913

在一个存储过程中调用返回一个游标的另一个存储过程

今天看到网友在优快云论坛问这个问题,问题内容是:如何在存储过程1 调用 存储过程2 ?存储过程2 返回多行记录。 我做了一个简单的例子,放在这里,以便大家参考: 1:首先你需要创建一个包,并定义你返回的游标的类型、存储过程 create or replace package TEST_PKG is --定义游标   type t_cur is REF CURSOR;   --存储

JACKY.昊昊 的专栏 3135

MediaPipe 教程:从安装到应用-全网最全

MediaPipe是Google推出的开源框架,专为构建机器学习管道设计,可以高效处理视频、音频等时间序列数据。本文教程从安装到应用逐步讲解: 安装步骤简单,只需通过pip安装mediapipe包并验证版本; 重点演示人体姿态检测功能,可识别33个身体关键点; 提供基础代码实现,包括视频捕获、关键点检测与可视化; 强调模块化开发,将功能封装成类以提高代码复用性。 教程适合初学者,通过清晰指引和实用代码示例,帮助快速实现计算机视觉应用。

FJN110的博客 1563

python实现MACD策略背离点的判断 (附完整源码)

python实现MACD策略背离点的判断 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 667

如何在oracle存储过程中返回游标

 1:首先你需要创建一个包,并定义你返回的游标的类型、存储过程create or replace package TEST_PKG is    -- Public type declarations  type cur_emp is REF CURSOR;    procedure test_proc (v_empno in number, emps out cur_emp);

wjcreator123的专栏 763

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Oracle 存储过程返回数据集(游标)

声明:本文整理自网络,加上个人实际实验结果   Oracle存储过程返回数据集,其实就是返回游标,这里需要了解这样几个概念,游标、存储过程的out参数、引用游标类型、Oracle的程序包,这里只说明具体怎么做,如果想了解以上概念请自行在网上搜索或关注我的博客。 首先说一下思路:         定义一个包(这相当于一个容器)(也可以理解为Java中的类)         包中包含一个...

苦海行舟 1215

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

如何在oracle存储过程中返回游标----例子一

1:首先你需要创建一个包,并定义你返回的游标的类型、存储过程create or replace package TEST_PKG is    -- Public type declarations  type cur_emp is REF CURSOR;    procedure test_proc (v_empno in number, emps out cur_emp);  e

lennyf的专栏 625

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Oracle带游标的存储过程在plus中的调用实例

之前在帖子http://blog.youkuaiyun.com/szstephenzhou/article/details/7737342 里回答了一些网友的关于怎么穿件一个返回记录集合的存储过程。想必很多网友已经很明白了,这里就不多讲了,先在这个帖子主要回答百度知道http://zhidao.baidu.com/question/453032020.html?fr=uc_ma_push&fl=red&old

1万+

关于Oracle 游标返回值 在C#中的运用(引用自www.souzz.net,个人学习参考用)

 1. 调用包含out/ in out类型参数的存储过程 存储过程: CREATE OR REPLACE PROCEDURE "SITE_EDITSITEDATAEXIST" (id_ number, name_ varchar2, httpRoot_ varchar2, flag out integer )//out 只具备输出功能 in out 为输入/输出型 as

c8640的专栏 1328

Oracle 存储过程/存储函数,out参数返回集合(游标),包头(package),包体

  存储过程 out参数返回集合(游标),放在包中: /* 1、查询某个员工的所有信息 ---&gt; out参数太多 2、查询某个部门中的所有员工信息 ----&gt; 返回的是集合 */ --查询某个部门中的所有员工信息 ----&gt; 返回的是集合(整个一条记录) --包头(打包,作为一个整体编译) create or replace package mypackage is ...

houyanhua1的专栏 3382

java jdbc游标_JDBC返回游标 | 学步园

Oracle存储过程返回游标有俩种方法:一种是声明系统游标,一种是声明自定义游标,然后后面操作一样,参数类型为in out 或out(1)声明个人系统游标.(推荐)create or replace p_temp_procedure(cur_arg out sys_refcursor; --方法1(系统自带的游标,相比方法2少去的了自己定义一个存储过程来调用游标 ))beginopen c...

weixin_42515795的博客 583

java调用oracle存储过程

本文介绍了两种Java调用Oracle存储过程的实现方法:1)返回单个值,通过输入身份证号获取手机号;2)返回多个值(包含游标结果集),通过输入两个号码查询缴费记录。两种方法均采用MyBatis框架,在mapper.xml中使用CALLABLE声明存储过程调用,详细说明了参数传递方式和结果获取技巧。文章通过PLSQL测试验证和Java代码示例,展示了从参数封装到结果提取的完整流程,包括游标结果集的JSON转换处理。该方案适用于需要与Oracle存储过程交互的Java应用场景。

qq_38818858的博客 663

c# oracle存储过程返回结果集,C#显示存储过程返回的游标数据集

1、--Oracle 创建包 申明自定义游标类型create or replace package pk_Var istype csr_tpis ref cursor;end;2、--Oracle 创建存储过程返回数据集合CREATE OR REPLACE PROCEDURE pr_getdata(v_empno VARCHAR2 , RC1 out PK_Var.csr_tp )ASsSQ...

weixin_36212175的博客 255
上一篇: oracle 数据库提高查询的方法
下一篇: javasctipt通过高阶函数实现AOP
Alecor
博客等级 码龄11年 25粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值