通过adodb连接在vb中使用oracle存储过程

Using oracle stored procedure in vb through adodb connection(通过adodb连接在vb中使用oracle存储过程)
本文介绍了通过adodb连接在vb中使用oracle存储过程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

oracle 中的包:

Package in oracle:

create or replace package pkgsearch as
type mycursor is ref cursor;
procedure acc_search(id in varchar,cur out mycursor);
end pkgsearch;

CREATE OR REPLACE PACKAGE BODY pkgsearch AS
PROCEDURE acc_search (id in varchar,cur out mycursor) IS
BEGIN
OPEN cur FOR SELECT *
FROM account
WHERE accno = 'id';
end acc_search;
end pkgsearch;

此包用于搜索帐户记录,其中 id 作为参数传递给程序.VB中的代码

This package is used to search account records where id is passed as paramter to procedure. Code in VB

dim con as new ADODB.connection
Dim rs As New ADODB.Recordset
Dim cmd As New ADODB.Command
Dim param As New ADODB.Parameter
Dim str As String

con.open "dsn=xxxxx;uid=xxxxxx;pwd=xxxxxx"

With cmd
.ActiveConnection = con
.CommandText = "pkgsearch.acc_search"
.CommandType = adCmdStoredProc
Set param = .CreateParameter("id", adVarChar, adParamInput, 10, Text1.Text)
.Parameters.Append param
End With

Set rs = cmd.Execute

Text1.Text = rs.Fields(0).Value
Text2.Text = rs.Fields(1).Value

这产生:

运行时错误'-2147217887(80040e21)';ODBC 驱动程序不支持请求的属性.单击调试后,它会突出显示set rs =cmd.execute"

run-time error '-2147217887(80040e21)'; ODBC driver does not support the requested properties. After clicking on debug it highlights 'set rs =cmd.execute'

请提出一些修改建议.

在 VB 中执行命令后还有其他使用记录集的方法吗?

Is there any other way of using recordset after executing command in VB?

提前谢谢.

推荐答案

我不确定是否使用 Oracle,但我认为它与 SQL 几乎相同.

I am not sure about using Oracle but I assume its almost the same as SQL.

这是我用于 SQL 的:

This is what I used for SQL:

sql = "exec STORED PROCEDURE HERE"
Set RS = ExecuteQuery(sql)
RS.MoveFirst

While not EOF
DO STUFF
RS.MoveNext
Wend

共享模块:

Public connect As New ADODB.Connection
Public cmd As ADODB.command

    Public Function ConnectToDBOpen() As Boolean
        If (connect.State = adStateOpen) Then
            connect.Close
        End If
        connect.CursorLocation = adUSeClient
        connect.Open "CONNECTION INFO HERE"

        ConnectToDBOpen = True
    End Function


    Public Function DisconnectFromDB()

        connect.Close

    End Function


    Public Function ExecuteQuery(ByVal sqlQuery As String) As ADODB.Recordset
        Dim rsOut As ADODB.Recordset
        Set rsOut = New ADODB.Recordset
        Dim recordsAffected As Long


        If ConnectToDBOpen Then
            Dim command
            Set command = New ADODB.command

            With command
                .ActiveConnection = connect
                .CommandText = sqlQuery
                .CommandType = adCmdText
            End With

            rsOut.Open command.Execute(recordsAffected)

            Set ExecuteQuery = rsOut
            Set command = Nothing
            Call DisconnectFromDB
        End If
    End Function

这篇关于通过adodb连接在vb中使用oracle存储过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Insert multiple rows, count based on another table columns(插入多行,根据另一个表列计数)
How to send to email (outlook) the selected items in SQL Server database using vb.net(如何使用 vb.net 将 SQL Server 数据库中的选定项目发送到电子邮件(Outlook))
DBCC CheckDb-any ways to detect errors vb.net?(DBCC CheckDb-vb.net 有什么检测错误的方法吗?)
Dynamic SQL generation is not supported against multiple base tables in WinForms(WinForms 中的多个基表不支持动态 SQL 生成)
Using a string which comprises of values in a query(使用由查询中的值组成的字符串)
Connect to MS SQL Server 2014 from a computer on a different network(从不同网络上的计算机连接到 MS SQL Server 2014)