vb调用oracle数据库返回游标的存储过程

游标与异常处理 游标与异常处理一.实验目标1、针对数据库应用领域的数据需求,设计出基于Oracle数据库的解决方案的能力;2、承担Oracle数据库系统的实施、运行与维护等基本工作的能力。二.实验项目1.用显式游标输出emp表的所有信息。2.用隐式游标输出dept表的所有信息。3.利用游标,修改员工工资。根据job不同,为员工增加相应的sal:4.用显式游标输出指定学年欠费的学生名单(含姓名、专业、欠费金额)。5... 阅读详情
首先看我的oracle数据包
create or replace package Pkg_GetQuery is

  
-- Author  : ZM
  -- Created : 2007-12-12 19:38:22
  -- Purpose :

  
-- Public type declarations
  type Cur_Ref is ref cursor;
  
Procedure Proc_GetQueryStudinfo(strkey varchar2,cur_Result out Cur_Ref);


end Pkg_GetQuery;
其次包的主体实现:
create or replace package body Pkg_GetQuery is

  
-- Private type declarations
  procedure Proc_GetQueryStudinfo(strkey varchar2,cur_Result out cur_Ref)
  
is
  strsql 
varchar2(1000);
  
begin
       strsql:
='select * from StudInfo Where StudName Like '''||strkey||'%''';
       
Open Cur_Result For StrSql;/*比较重要的一句*/
  
end;
end Pkg_GetQuery;


 
再次,用VB调用存储过程开始:
conn.ConnectionString = strconn
    conn.CursorLocation 
= adUseClient
    conn.Open
    Set cmd.ActiveConnection 
= conn
    cmd.CommandType 
= adCmdStoredProc
    cmd.CommandText 
= "STUD20050704006.Pkg_GetQuery.Proc_GetQueryStudInfo"
 Set para1 
= cmd.CreateParameter("StrKey", adVarChar, adParamInput, 1000, "张")
    para1.Value 
= Text1.Text
    cmd.Parameters.Append para1
    
'    Set para2 = cmd.CreateParameter("Cur_Result", adUserDefined, adParamOutput)
'
    cmd.Parameters.Append para2
    

    
    Set rs 
= cmd.Execute()

大家看到了,我第二个参数的类型,我写的是adUserDefined,后测试不行.它并不像C#那样,可以写cmd.Parameters.Add("rst",OracleType.Cursor);   后查了很多资料,才解决.
完整代码:
 Dim strconn As String
Dim conn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim para As New ADODB.Parameter
Dim rs As New ADODB.Recordset
Dim para1 As New ADODB.Parameter
Dim para2 As New ADODB.Parameter


Private Sub Command1_Click()
strconn 
= "Provider=MSDAORA.1;Password=*****;User ID=linux_wolfelite;Data Source=0.0.0.0/jkxoracl;Persist Security Info=True"
    conn.ConnectionString 
= strconn
    conn.CursorLocation 
= adUseClient
    conn.Open
    
Set cmd.ActiveConnection = conn
    cmd.CommandType 
= adCmdStoredProc
    cmd.CommandText 
= "STUD20050704006.Pkg_GetQuery.Proc_GetQueryStudInfo"
      
    
'    Set para = cmd.CreateParameter("score", adNumeric, adParamInput)
'
    para.Precision = 4
'
    para.NumericScale = 1
    Set para1 = cmd.CreateParameter("StrKey", adVarChar, adParamInput, 1000, "张")
    para1.Value 
= Text1.Text
    cmd.Parameters.Append para1
    
'    Set para2 = cmd.CreateParameter("Cur_Result", adUserDefined, adParamOutput)
'
    cmd.Parameters.Append para2
    

    
    
Set rs = cmd.Execute()
         
       
        
              
If rs.RecordCount > 0 Then
                      
MsgBox rs.RecordCount
                    
              
End If

    
Set DataGrid1.DataSource = rs
    DataGrid1.Refresh
    
If Not rs.BOF Then
    rs.MoveLast
    Text2.Text 
= rs(0).Value
    
End If
    
'  Set   rst   =   cmd.Execute(Null,   Null,   adCmdStoredProc)

'    Set rs = Nothing
'
    Set conn = Nothing
End Sub

Private Sub Command2_Click()
rs.MovePrevious
 Text2.Text 
= rs(0).Value
End Sub
说明:
1,text1是输入参数值,
2,text2没有多大意义,我是为了测试是否可以movelast
3,感谢这个帖子,http://www.80diy.com/home/20060323/15/4634977.html,
4,给出C#调用代码,用C#代码调用是比较简单的.

private DataTable ExecuteProcToDataSet(string Proc_Name,Hashtable HT,string
Ref_Cur_Name) 
{
• DataTable MyTable 
= new DataTable();
• 
try {
• OraConn 
= new OracleConnection(StrConnOracle);
• OraComm 
= new OracleCommand();
• OraComm.Connection 
= OraConn;
•
OraComm.CommandType 
= CommandType.StoredProcedure;
• OraComm.CommandText 
= Proc_Name;
• IDictionaryEnumerator Enumerator
= HT.GetEnumerator();
•
while (Enumerator.MoveNext()) {
•
object
Value 
= Enumerator.Value;
• OracleParameter OraParam
=new
OracleParameter(Enumerator.Key.ToString(), Value);
• OraComm.Parameters.Add(OraParam);
•
OracleParameter OraParamCur 
= new
OracleParameter(Ref_Cur_Name, OracleType.Cursor);
• OraParamCur.Direction 
= ParameterDirection.Output;
• OraComm.Parameters.Add(OraParamCur);
• DataSet MyDataSet 
= new DataSet();
• OraAdapter 
= new OracleDataAdapter(OraComm);
• OraAdapter.Fill(MyDataSet, 
"MyTable");
• MyTable 
= MyDataSet.Tables["MyTable"];
• }

• 
catch (Exception ex)
• 
{
• MessageBox.Show(ex.Message);
• }

• 
return MyTable;
• }

VB6与ADO技术结合Oracle数据库事务操作实战 Visual Basic 6.0(VB6)是微软于上世纪90年代末发布的编程语言,它以其面向对象的特性、易于上手的IDE界面及丰富的组件库,成为了一代程序员学习编程的首选。VB6在开发Windows桌面应用程序方面表现出色,尤其是快速开发小型到中型的应用程序方面,效率极高。随着技术的发展,VB6虽然被现代编程语言如C#、Java等所取代,但在某些遗留系统和小型项目中仍可看到它的影子。尽管VB6不再得到微软的官方支持,其代码库和社区支持仍然存在,为处理老项目提供参考和资源。 阅读详情

相关推荐

VB 调用oracle 带返回值的存储过程

VB 调用oracle 带返回值的存储过程 DEMO

VB6.0数据库学习笔记

Dim conn As New ADODB.ConnectionDim rs As New ADODB.RecordsetDim comm As New ADODB.CommandPrivate Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)MsgBox Me.DataGrid1.Columns("u...

weixin_34249367的博客 210

使用VB 调用oracle 数据库存储过程的研究

使用VB 与oracle 进行连接是软件开发人员经常使用的组合,充分利用oracle 中的存储过程来处理应用 程序频繁使用的逻辑,不仅可以提高效率和安全性,而且也可以最大限度地利用资源,减少编程人员的重复劳 动。对存储过程的使用方法,重点对参数的传递、返回值的处理进行了分析,并举例说明了实际的处理过程, 可以更好理解和使用存储过程解决实际问题。

VB6--RECORDSET游标类型

rs.Open sql,conn,1,3和rs.Open sql,conn,3,3有什么区别     conn.open mysql,conn,A,B  参数A为设定游标的类型,其取值为:  0 仅向前游标,只能向前浏览记录,不支持分页、Recordset、BookMark  1 键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中

yy668dht的专栏 1203

vb调用oracle存储过程

vb中调用oracle存储过程,及有一个存储过程实例

【Vite+Vue3+TS】基于Vite+Vue3+TypeScript+ESLint+Prettier+Stylelint搭建项目(亲测超详细)

结合了很多项目和文章,总结一篇项目构建的笔记。 温馨提示:文章末尾记录了我在搭建项目过程中,遇到的一些问题和解决办法 ~

aDiaoYa_的博客 4231

一个简单的oracle分页存储过程的实现和调用

一个简单的oracle分页存储过程的实现和调用 一个简单的oracle分页存储过程的实现和调用 在oracle的存储过程中返回记录集,需要用到游标变量,oracle不能像sqlserver那样可以直接返回一个记录集。 由于设想在.net中把复杂的sql语句生...

Lzh19941104的博客 200

CAN-do-paser:Java开发的CAN总线数据帧解析库

CAN总线数据帧使用DBC文件信息解析为物理量,基于Java开发的数据解析工具。

佳瑞的博客 1133

vb.net调用oracle存储过程,今天搞好了VB.NET调用Oracle存储过程返回游标的问题

代码:Public Function GetData(ByVal procDate As String) As ArrayListTryDim conn As New Oracle.DataAccess.Client.OracleConnectionDim cmd As New Oracle.DataAccess.Client.OracleCommandconn.ConnectionString ...

weixin_42351910的博客 341

杰理SDK入门教程(一):SDK的四种编译方式的使用

杰理SDK提供了四种主要编译方式:1) JL Studio官方IDE,适合初学者;2) VS Code轻量级编辑器,需在SDK根目录打开;3) 命令行/脚本编译,灵活支持自动化;4) Code::Blocks开源IDE。每种方式都有详细操作指南,开发者可根据需求选择,初学者推荐从JL Studio开始熟悉编译流程。环境配置注意事项和编译成功标识均有明确说明,确保开发效率。

qq_42014563的博客 1149

mbed驱动st7789屏幕-硬件选择及连接(1)

在单片机项目中,交互性至关重要,而视觉感知是用户交互的直接体现。本期专栏介绍了如何使用mbed平台驱动ST7789型号的TFT屏幕,以显示字符、汉字和图像。由于针对STM32L432KC的mbed驱动库尚未完整,作者自行编写了一个基于mbed的ST7789屏幕驱动库,并将在专栏中提供全代码及使用指南。

weixin_64524066的博客 391

Java使用Mybatis调用存储过程以及简单使用游标—重点都在XML文件中

存储过程:它是数据库预先编译好的一个sql,可以重复调用,无需二次编译,如果不太清楚可以试着理解为在Java中写的一个方法。 1.存储过程参数 存储过程定义了三个参数: IN:输入参数,即外界传入的参数 OUT:输出参数,即经过计算返回的参数 INOUT:输入输出参数,即外界传入的参数,经过计算又返回的参数 2.IN,OUT,IN OUT演示 这里使用Oracle数据库进行编写存储过程 假如我们要求输入一个名字查询条数和目前时间,根据输入id返回其note create or repl

m0_56058975的博客 2962

华为OD新系统机试真题 - 配置操作失败数量统计

华为OD机试新系统 4月8号【配置操作失败数量统计】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【配置操作失败数量统计】。

qq_45776114的博客 1161

VBA调用带游标返回值的ORACLE存储过程

【解决方案一】: On Error GoTo 11 Dim hisCNN As ADODB.Connection Dim hisRST As ADODB.Recordset Dim sSQL As String Dim iZDS As Integer Dim sBT

hcx_2008的专栏 2677

基于STM32单片机设计的红外测温仪(带人脸检测)_34

当前设计的这款红外非接触式测温仪由测温硬件+上位机软件组合而成,主要用在地铁、车站入口等地方,可以准确识别人脸进行测温,如果有人温度超标会进行语音提示并且保存当前人脸照片。

8770

【温室气体数据集】全球总碳柱观测网络 TCCON

【温室气体数据集】全球总碳柱观测网络 TCCON

WW、forever的博客 437

vb 调用oracle函数返回值,vb 调用 Oracle 函数返回数据集的例子-数据库专栏,ORACLE...

pl/sql 代码:create or replace package “scott”.”pkg_test” astype myrctype is ref cursor;function get(strbarcode varchar) return myrctype;end pkg_test;create or replace package body “scott”.”pkg_test” asf...

weixin_35824356的博客 283

大数据安全 | 期末复习(上)| 补档

大数据定义:无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

知识库搭建ing 2589

Oracle的存储过程、JDBC调用存储过程:四种分类详解及实例(Oracle)、 merge

Oracle的存储过程基本写法 1.1,Oracle存储过程简介:    存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作, 减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 优点: 允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。 允许更快执行,如果某操作需要执行大量...

. 966

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

vb 调用 Oracle 函数返回数据集的例子

PL/SQL 代码:CREATE OR REPLACE PACKAGE "SCOTT"."PKG_TEST" AS       TYPE myrcType IS REF CURSOR;       FUNCTION get(strbarcode VARCHAR) RETURN myrcType;END pkg_test;CREATE OR REPLACE PACKAGE BODY "SCOTT".

chanet(牧师)'s blog 3024

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

oracle存储过程返回datatable,存储过程 返回datatable

网络工作室暑假后第二次培训资料(SQLServer存储过程和ADO.NET访问存储过程)整理(二)使用ADO,NET来调用存储过程可以分为一下4种方式1)调用不带参数的存储过程2)调用带一个参数的存储过程3)调用带多个参数的存储过程4)调用带输出参数的存储过程(本代码示例所使用的存储过程,使用的是作者的上一篇博文所创建的存储过程,博文地址:http://yisuowushinian....文章技术...

weixin_35598388的博客 1126

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

asp oracle存储过程,ASP调用Oracle存储过程

夏毅一、asp动态网站开发技术随着人们对因特网认识的加深和it技术的发展,一成不变的静态网页已经越来越满足不了信息交互和电子商务的需求,因此以数据库为核心开发能够实现信息交互和个性化服务的网页已经成为一种潮流。为了迎合动态交互式网页的开发趋势,出现了可以与后台数据库进行互动的web开发技术,目前比较流行的一类是建立在微软windows平台iis基础上的asp(active server pages...

weixin_39712969的博客 296

asp oracle 分页显示,一个简单的oracle分页存储过程的实现和调用-ASP教程,ASP应用...

在看了众多的分页存储过程以后发现都是针对sqlserver的,而没有oracle的,因此想写一个关于oracle的存储过程,因为我用到的数据库是oracle.————————————————————————————————————————————————————————————–oracle分页存储过程的思路于sqlserver的思路是一样的,但是我这里做了点改动,在因为oracle的语法和规则的...

weixin_39973410的博客 142
上一篇: 统说ado对象游标类型(Connection,RecordSet)以及显示数据记录的三板斧
下一篇: 楚天音乐台的在线广播的URL代码
linux_wolfelite
博客等级 码龄20年 3粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值