Oracle 存储过程返回结果集 (转)[@more@]

1.返回数组 (作者:/Message_Board/Send.?sendto=enhydraboy" target=_blank>enhydraboy(乱舞的浮尘))

在后台创建一个包或者过程

connect tt/tiger;

CREATE OR REPLACE PACKAGE ado_callpkg AS

TYPE eid IS TABLE of NUMBER(4) INDEX BY BINARY_INTEGER;

TYPE ename IS TABLE of VARCHAR2(40) INDEX BY BINARY_INTEGER;

PROCEDURE getEmpNames (empid OUT eid,empname OUT ename);

end ado_callpkg;

CREATE OR REPLACE PACKAGE BODY ado_callpkg  AS

PROCEDURE getEmpNames (empid OUT eid,empname OUT ename) IS

CURSOR c1 IS employee_id,first_name||','||Middle_Initial||','||last_name as name from employee;

cnt NUMBER DEFAULT 1;

c c1%ROWTYPE;

BEGIN

open c1;

L

FETCH c1 INTO c;

empname(cnt):=c.name;

empid(cnt):=c.employee_id;

EXIT WHEN c1%NOTFOUND;  -- process the data

cnt :=cnt+1;

END LOOP;

close c1;

END;

end ado_callpkg;

2 前台vb程序

Dim cn As New ADO.Connection

Dim rs As New ADODB.Recordset

Dim cmd As New ADODB.Command

Dim str As String

str = "{call ado_callpkg.getEmpNames({resultset 100,empid,empname})}"

cn.Open "Provr=MSDAORA.1;Pass=tiger;User ID=scott;Data =ORACLE;Persist Security Info=True"

With cmd

.CommandText = str

.ActiveConnection = cn

.CommandType = adCmdText

End With

rs.CursorLocation = adUseClient

rs.Open cmd

Do While Not rs.EOF

De.Print rs.Fields(0).Value & vbTab & rs.Fields(1).Value

rs.MoveNext

Loop

------------

总结

1 oracle的后台存储过程,应该通过一个类似数组并且带有数字的变量返回,有多少个列,就有对应多少个变量

2 前台,调用的语句写法要注意,

{call .(,,....,{resultset ,,,...})}

注意的细节,

(1) 要自己指定一个数字,表示接受的行数大小,如果太小,而实际返回的记录大于这个数字,会出错

(2) 如果有输入参数,应该在command中创建输入参数,对应的地方用?替代,如

{call ado_callpkg.getEmpNames(?,{resultset 100,empid,empname})}

(3) output和你存储的定义一致,参数名要一样,次序也一样,否则也会出错。

oracle 存储过程返回,Oracle 存储过程返回结果集 (转)相关推荐

  1. oracle java存储过程返回值_java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)...

    java程序调用Oracle 存储过程 获取返回值(无返回,非结 果集,结果集) oracle中procedure是不能有返回值的,要想返回值,就得有 输出参数,同样要想返回记录集,可以把游标类型作为 ...

  2. shell执行oracle存储过程,获得存储过程返回值

    From: http://www.flatws.cn/article/program/oracle/2011-06-27/32316.html 同事做一个小的etl调度,需要将存储过程执行情况进行返回 ...

  3. oracle数据块调用存储过程,VC调用存储过程的通用方法(ORACLE篇)

    先对上一篇调用SQLServer的存储过程作一点补充,就是如果存储过程里有Insert,update,delete等操作,最后返回结果集,按示例代码有可能得不到数据,因为返回的数据有可能不在第一个结果 ...

  4. oracle 存储过程 db,oracle数据库的存储过程是什么?

    oracle数据库的存储过程:一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即 ...

  5. Oracle 存储过程,Hibernate 调用存储过程,JDBC调用存储过程,Oracle 动态SQL

    Oracle 存储过程学习 目录 Oracle 存储过程........................................................................ ...

  6. oracle数据库procedure(存储过程)的创建与调用

    说明: 该文为网络视频课程整理笔记 视频链接:https://www.bilibili.com/video/BV1Bb411E74d?spm_id_from=333.788.header_right. ...

  7. oracle 定时任务 job 调用存储过程有回到输出参数(含out参数)

    oracle 定时任务 job 调用存储过程有返回输出参数(含out参数) 因前台调用一个含有OUT参数的存储过程,同时在JOB里也想调用同一个存储过程,不想将OUT参数去掉重新建一个存储过程再被JO ...

  8. 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL ...

  9. 12、oracle数据库下的存储过程和函数

    ORACLE下的存储过程和函数 存储过程和函数是一种操作块,用来流程化.整体化处理业务逻辑的数据库操作方式.我理解的是相当于java开发语言中方法的概念,存储过程和函数的区别在于函数可以有返回值,而过 ...

  10. otl oracle存储过程,OTL调用存储过程/函数及注意事项

    OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个 C++ 编译中操控关系数据库的模板库,它目前几乎支持所有的当前各种主流数据库. OTL  ...

最新文章

  1. STM32的晶振脚(OSCIN和OSCOUT)当成普通IO来使用
  2. python 包管理工具poetry
  3. 计算机计算各科及格率,某两个班数学考试成绩如下,要求计算分析指标,用..._投资分析考试_帮考网...
  4. [AtCoder Regular Contest 060] E - Tak and Hotels
  5. 1607: 字符棱形
  6. 在Windows Server2008上安装SQL2008群集
  7. Codeforces525E Anya and Cubes(双向搜索)
  8. 进入32位保护模式之路
  9. 参考官方mysql自定义一个mysql sink connector
  10. WIN10 未安装音频设备输出设备 喇叭红叉
  11. linux c语言round函数,c语言round函数使用问题
  12. 《Java工程师修炼之道》学习笔记
  13. Flink on Yarn(HA配置)
  14. 动态活体检测 | 算法分析
  15. 语音识别 公司_语音识别公司_语音识别公司排名 - 云+社区 - 腾讯云
  16. 无线传感器网络:定位、安全与同步
  17. 艺赛旗(RPA)解压缩文件
  18. PostGIS 距离计算规范 - 投影 与 球 坐标系, geometry 与 geography 类型
  19. 使用DBUtil踩过的坑,使用DButil查不出结果
  20. OpenHarmony 物联网设备开发环境搭建

热门文章

  1. (附源码)计算机毕业设计ssm毕业生就业信息管理系统
  2. 去中心化数字身份DID简介——五、DID的应用
  3. 微软推出python免费在线教程视频_微软推出 Python 免费在线视频教程 - 爱绿豆
  4. 七日年化利率是怎么计算的?
  5. 如何选择一款好用的物业管理软件?快鲸物业管理软件是不二之选
  6. 解决Google联网失败的问题
  7. html div代码大全,DIV+CSS 常用代码大全
  8. 2021年机械员-岗位技能(机械员)考试题及机械员-岗位技能(机械员)免费试题
  9. 360安全卫士怎么设置允许电脑桌面云便签开机自启动?
  10. 大型网站架构设计及技术总结