存储过程:单变量 到sys_refcursor

jdbc组件访问存储过程输出参数类型为sys_refcursor的简单示例 一、创建存储过程 创建存储过程 CREATE OR REPLACE PROCEDURE proc_dep_info (datas OUT SYS_REFCURSOR) AS BEGIN OPEN datas FOR SELECT * FROM dept; END proc_dep_info; 二、创建数据库访问组件类DeptDao.java import java.sq... 阅读详情

作用:
1.复用;2.一次编译,多次运行,提高效率;3.打包多条sql.

语法:
or replace可以不写,表示:如果存储过程不存在,就创建;如果存储过程已经存在了,就替换
procedure 存储过程的关键字
存储过程的名字是自定义的;
过程的名字后面,如果有传入的或者返回的参数,那么必须要有小括号;如果没有传入和返回的参数,就不写小括号;
小括号中,可以写多个参数;
每个参数都应该用in或者out来修饰:
        in : 表示这个参数是一个传入的参数
        out : 表示这个参数是用来返回的
参数的数据类型,不能写小括号和长度;
多个参数之间,使用都好隔开
create or replace procedure 存储过程的名字(
    参数1    in/out    数据类型(不允许写长度),
    参数2    in/out    数据类型(不允许写长度),
    参数3    in/out    数据类型(不允许写长度)
)is
    变量1  数据类型(可以有长度);
    变量2  数据类型(可以有长度);
    变量3  数据类型(可以有长度);
begin
    语句块;
exception
    处理异常;
end;

例子1:给定员工编号,查询员工工资
形参:形式参数
create or replace procedure findSalByEmpno(
    v_no    in     number,
    v_sal   out    number
)is
    
begin
    select sal into v_sal from emp where empno=v_no;
end;

创建成功之后,如果要执行,需要再调用:
set serveroutput on;
调用测试:
实参:实际参数,里面是存放有实际的值的
declare
    eno  number(8):=7369;
    esal number(8);
begin
    findSalByEmpno(eno,esal);
    dbms_output.put_line('esal:'||esal);
end;

存储过程第二种调用方式:
这里定义了一个会话级的变量;
var esal number;
先打印会话级变量的值
print esal;--现在值为空
调用存储过程,传入7369,并把结果返回到esal变量中
因为这里用到了会话级变量esal,会话级变量在使用时需要再变量前,加冒号
exec findSalByEmpno(7369,:esal);
再次打印esal,此时esal已经有值了..
print esal;

select * from emp;
第三种方式调用:
var v_sal number;
call findSalByEmpno(7499,:v_sal);


例子2:给定一个名字,计算该员工应缴纳的税金
create or replace procedure computeFax(
    v_name in  emp.ename%type,
    v_fax  out emp.sal%type
)is
    v_sal emp.sal%type;
    mid_sal emp.sal%type;
begin
    select sal into v_sal from emp where ename=v_name;
    mid_sal:=v_sal - 3500;
    if mid_sal<=0 then v_fax:=0;
        elsif mid_sal<=1500 then v_fax:=mid_sal*0.03-0;
        elsif mid_sal<=4500 then v_fax:=mid_sal*0.1-105;
        else v_fax:=mid_sal*0.45-13505;
    end if;
end;

测试
declare
    v_fax emp.sal%type;
begin
    computeFax('KING',v_fax);
    dbms_output.put_line(v_fax);
end;


例子3:给定一个员工编号,查询员工所有信息
create or replace procedure findEmpByEmpno(
    v_no   in   emp.empno%type,
    v_emp  out  emp%rowtype
)is

begin
    select * into v_emp from emp where empno=v_no;
end;

测试
declare
    v_emp   emp%rowtype;
begin
    findEmpByEmpno(7369,v_emp);
    dbms_output.put_line(v_emp.empno||','||v_emp.ename||','||v_emp.sal);
end;

例子4:返回多行数据
cursor不能用于返回数据到存储过程以外的地方
sys_refcursor : 系统游标,用于从存储过程或函数中返回多行数据


create or replace procedure findallemp(
    allemp  out  sys_refcursor
)is
    --cursor empinfo is select * from emp where empno=7369;
begin
    open allemp for select * from emp;    
end;
    
调用
declare
    allemp  sys_refcursor;
    empinfo emp%rowtype;
begin
    findallemp(allemp);
    loop
        fetch allemp into empinfo;
        if allemp%notfound then exit;end if;
        dbms_output.put_line(empinfo.empno||','||empinfo.ename||','||empinfo.sal);
    end loop;
    if allemp%isopen then close allemp;end if;
end;

mybatis调用存储过程 记两一下工作中用到的mybatis调用存储过程,这边用到的mybatis是3.2.2版本,oracle 10g。 一、返回一个值的存储过程,如下: CREATE OR REPLACE PROCEDURE "SP_MF_I_IMP" ( I_MANIFEST_I_ID IN NUMBER , I_FUNCTION_CODE IN VARCHAR 阅读详情

相关推荐

SMILES:化学结构的线性表示方法

SMILES:化学结构的线性表示方法

jasminefeng的博客 1万+

oracle数据库之cursor、refcursor及sys_refcursor区别

概图: 1 显式cursor 显式是相对与隐式cursor而言的,就是有一个明确的声明的cursor。 显式游标的声明类似如下 : cursor cursor_name (parameter list) is select ... 游标一个完整的生命周期: declare->open->fetch->close 游标是可以被多次open进行使用的 显式cursor是静态cursor,作用域是全局的 静态cursor也只有pl/sql代码才可以使用她 下面看一个简单的静态显

数据库技术 4098

ESP32-CAM与TFT屏幕实时图像传输:Arduino环境下的OV2640驱动实践

本文详细介绍了在Arduino环境下实现ESP32-CAM与TFT屏幕实时图像传输的完整实践方案。重点解析了OV2640摄像头的驱动配置、硬件引脚连接、TFT屏幕初始化及图像显示优化技巧,帮助开发者快速构建稳定的实时图像显示系统,适用于物联网监控、门禁系统等场景。

cuda7parallel的博客 115

使用sys_refcursor和临时表返回oracle结果集

sys_refcursor是oracle9i以后系统定义的一个refcursor,主要用在过程中返回结果集。 如果仅仅为了返回值,无需自己在包头中定义游标类型,只需直接使用sys_refcursor即可轻松返回结果。但如果返回结果需要中间计算,就需要临时表进行存储,最后返回。示例代码说明,简单明了。

neweastsun的专栏 1万+

【脑电信号处理与特征提取】P2-夏晓磊:脑电的神经起源与测量

ElectroEncephaloGraphyTherefore, EEG produces a graphed representation of the electrical activity occurring in a person’s brain.(把一个人的大脑中的电活动画出来)脑电头皮表面记录到的大脑活动产生的电信号(微伏)。(记录位置:硬脑膜/大脑皮层表面- ECoG,神经元群- LFP与MUR/MUA:活动位置:心电、眼电、肌电等)脑电图电压随时间变化的波形图。

m0_51474171的博客 1896

HTML5期末大作业:关于家乡介绍的HTML网页设计——郑州美景HTML+CSS(5页) 学生DW家乡介绍网页设计作业成品 web课程设计网页规划与设计

HTML5期末大作业:我的家乡——郑州美景HTML+CSS(5页) 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业, 可满足大学生网页大作业网页设计需求, 喜

qq_365392777 1万+

sys_refcursor使用案例

sys_refcursor使用案例一、介绍二、sys_refcursor是一种数据类型 一、介绍 工作中看到了sys_refcursor的类型,之前没接触过,所以就上网搜一搜。可能是我技术比较垃圾,网上大部分的介绍都看不懂,没有一个最基础的介绍,最后我在微信公众号中看到了小白案例,在这里分享一下。 二、sys_refcursor是一种数据类型 sys_refcursor是一种数据类型,定义游标的数类型,网上介绍了什么各种静态、动态什么的,大家可以去参考,这里只介绍最基本的用法。 create or repl

valkyrja110的博客 3082

Lenovo 拯救者15ISK硬件升级实战:从内存到固态硬盘的全面优化

本文详细介绍了为联想拯救者15ISK笔记本电脑进行硬件升级的完整实战指南。通过评估升级可行性,指导如何挑选兼容的内存条与NVMe固态硬盘,并提供详细的拆机安装步骤与系统安装避坑技巧。升级后,笔记本的开机速度、软件加载及多任务处理能力获得飞跃式提升,让老旧设备重获新生。

weixin_29310631的博客 558

SYS_REFCURSOR系统游标的使用

1.函数返回系统游标 CREATE OR REPLACE FUNCTION F_GET_SYS_REFCURSOR_LHR(P_EMPNO NUMBER) RETURN SYS_REFCURSOR IS CUR_SYS SYS_REFCURSOR; BEGIN OPEN CUR_SYS FOR SELECT LEVEL P_LEVEL, T.EMPNO, T.ENAME, T.MGR,

qq_35329964的博客 704

详解电路设计中的RC电路

​ 一、什么是RC电路 RC电路是指由电阻R和电容C组成的电路,它是脉冲产生和整形电路中常用到 的电路。 常见的RC充、放电电路、RC积分电路合RC微分电路接下来详细讲解。 二、RC充、放电电路 RC充、放电电路如下图所示,下面通过充电和放电两个过程来分析此电路。 ​RC充、放电电路图 (1)RC充电电路 RC充电电路图如下图(a)所示 RC充电电路图及充电曲线图 ​由上图分析: 将上图a中开关S置于“1”处,电源E开始通过电阻R对电容C充电,由于刚开始充电时电容两端没有..

IT xiaobai 4万+

42页Claude 3技术报告解读(Opus, Sonnet, Haiku)

在Claude 3模型中,增加了一个额外的原则到Claude的宪法中,以鼓励尊重残疾人权利,这一原则源自对集体宪法AI的研究。Claude 3模型的训练基于专有的混合数据集,包括截至2023年8月互联网上公开可用的信息,以及第三方提供的非公开数据、数据标注服务和付费承包商提供的数据,还有内部生成的数据。这些初始响应通常包含有害和有毒的内容。Claude 3模型家族在推理、编码和问答任务上展现出卓越的性能,特别是在行业标准基准测试中取得了显著的提升,证明了其在处理复杂问题和提供准确答案方面的能力。

具身机器人和通用AI 2440

oracle 存储过程返回 结果集 table形式 (使用sys_refcursor 及程序包package 两种方式)

Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = 协议)(HOST=主机)(PORT=端口)))(CONNECT_DATA=(SERVICE_NAME=服务名)))" /> 注意: 这种方法有一个问题是,无法想上面的服务那样一次定义服务,在服务下面再定义多个连接。

男神的专栏 3029

(功能安全六)硬件FMEDA计算

FMEDA(故障模式、影响与诊断分析)是功能安全验证的核心方法,通过量化分析硬件故障模式及其影响,计算SPFM、LFM、PMHF等关键指标。分析过程包含六大步骤:计算元器件失效率、识别故障模式、评估安全机制诊断覆盖率、分类计算各类失效率、量化指标计算及设计优化。输入需要系统架构图、硬件故障模式清单等资料,输出安全指标达标情况及改进建议,确保设计满足ASIL等级要求。该方法通过系统化的故障分类和量化评估,为硬件安全设计提供科学依据。

Dayongger的博客 1454

JAVA执行带SYS_REFCURSOR游标的oracle存储过程返回结果集 会话级临时表

sys_refcursor是oracle9i以后系统定义的一个refcursor,主要作用是用于存储过程返回结果集。 存储过程结构如下: CREATE OR REPLACE PROCEDURE SP_CalcChargePrice /* 计算报备、评估收费基准价 @Charge=收费项目 @Amount=收费依据金额 @Kind=类别 1=报...

wh445306 1240

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

系统动态游标SYS_REFCURSOR的使用

文章目录系统动态游标SYS_REFCURSOR的使用准备数据准备存储过程使用测试删除测试数据附:普通动态游标的创建 系统动态游标SYS_REFCURSOR的使用 准备数据 -- 创建表 create table test_user_info( user_id integer primary key,--primary key user_name varchar2(20), ...

Regin的博客 802

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

oracle和dm7使用sys_refcursor和ref cursor返回结果集

oracle和dm7使用sys_refcursor和ref cursor返回结果集 1.二者的区别 ref cursor和sys_refcursor 前者需要单独声明,后者直接引用 举例: declare cur_test sys_refcursor; … declare type df_ref is ref cursor; rf df_ref; 2.如何显示结果集 1)第一种,直接在存储过程中,...

lt89102476的博客 1523

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

plsql 执行存储过程 SYS_REFCURSOR

表的结果集放入这个游标中。然后,可以在PL/SQL块中使用这个游标进行进一步的操作,例如循环遍历数据或者其他处理。最后,不要忘记关闭游标以释放资源。是一种特殊的数据类型,用于表示引用游标,可以用来返回查询结果或者操作数据库中的结果集。是一个简单的存储过程,它打开了一个。

男神的专栏 495

存储过程调用或接受另一存储过程返回的游标数据(Sys_refcursor类型)

一、示例 1.存储过程proc_A:定义如下: create or replace procedure proc_A(ID number, cur_OUT out sys_refcursor) is v_sql varchar2(2000); Begin v_sql:='select 总额, 自付, 自费 FROM 费用表 WHERE ID ='||ID; open cur

Orcl 4640

oracle function sys_refcursor,oracle如何合并多个sys_refcursor详解

一、背景在数据开发中,有时你需要合并两个动态游标sys_refcursor。开发一个存储过程PROC_A,这个过程业务逻辑相当复杂,代码篇幅较长。一段时间后要开发一个PROC_B,要用PROC_A同样的逻辑,而且在这个过程中,还要循环调用PROC_A这个过程。摆在你面前的有两个选择。打开PL/SQL,仔细的读PROC_A这个过程,一直到明白了所有的逻辑,然后在自己的过程中重写这个逻辑 。直接复制P...

weixin_30800961的博客 500

cursor 与refcursor及sys_refcursor的区别

利用REF CURSOR,可以在程序间传递结果集(一个程序里打开游标变量,在另外的程序里处理数据)。 也可以利用REF CURSOR实现BULK SQL,提高SQL性能。 REF CURSOR分两种,Strong REF CURSOR 和 Weak REF CURSOR。 Strong REF CURSOR:指定retrun type,CURSOR变量的类型必须和return

1412

Oracle数据库之sys_refcursor样例

1 建表 drop table USER_INFO; CREATE TABLE USER_INFO ( User_ID integer primary key,--Primary key User_Name varchar2(20), sex varchar2(2) ); insert into user_info(User_ID,user_name,sex) values(1,'David.Tian','M'); insert into user_info(User_

数据库技术 1398

ibatis 调用存储过程返回游标sys_refcursor

原文:http://www.myexception.cn/software-architecture-design/613196.html ibatis 调用存储过程返回游标sys_refcursor Ibatis 存储过程  游标 sys_refcursor oracle 10g ibTest.sql create table user_account ( user

zhch152的专栏 2274

oracle如何将多个clob合并到一起,oracle如何合并多个sys_refcursor详解

一、背景在数据开发中,有时你需要合并两个动态游标sys_refcursor。开发一个存储过程PROC_A,这个过程业务逻辑相当复杂,代码篇幅较长。一段时间后要开发一个PROC_B,要用PROC_A同样的逻辑,而且在这个过程中,还要循环调用PROC_A这个过程。摆在你面前的有两个选择。打开PL/SQL,仔细的读PROC_A这个过程,一直到明白了所有的逻辑,然后在自己的过程中重写这个逻辑 。直接复制P...

weixin_36323859的博客 1544
上一篇: 游标:显式游标和隐式游标,系统游标
下一篇: 自定义函数
好好羊
博客等级 码龄5年 5粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好好羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值