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

代码:

Public Function GetData(ByVal procDate As String) As ArrayListTry

Dim conn As New Oracle.DataAccess.Client.OracleConnection

Dim cmd As New Oracle.DataAccess.Client.OracleCommand

conn.ConnectionString = constring

cmd.Connection = conn

cmd.CommandType = CommandType.StoredProcedure

cmd.CommandText = "xxxxxxx.xxxxx"

conn.Open()

Dim para1 As New Oracle.DataAccess.Client.OracleParameter

Dim para2 As New Oracle.DataAccess.Client.OracleParameter

Dim rdr As Oracle.DataAccess.Client.OracleDataReader

With cmd

.Parameters.Clear()

.Parameters.Add("procDate", Oracle.DataAccess.Client.OracleDbType.Varchar2) _

.Value = procDate

.Parameters.Add("objCur", Oracle.DataAccess.Client.OracleDbType.RefCursor) _

.Direction = ParameterDirection.Output

End With

Dim ds As DataSet = New DataSet

Dim oraDa As Oracle.DataAccess.Client.OracleDataAdapter = _

New Oracle.DataAccess.Client.OracleDataAdapter(cmd)

Dim dt As DataTable

oraDa.Fill(ds)

dt = ds.Tables(0)

Dim dtList As New ArrayList

If Not dt Is Nothing AndAlso dt.Rows.Count > 0 Then

Dim iCount As Integer

For iCount = 0 To dt.Rows.Count - 1

dtList.Add(CStr(dt.Rows(iCount).Item(0)) & " " & CStr(dt.Rows(iCount).Item(1)))

Next

End If

Return dtList

Catch ex As Exception

MsgBox(ex.ToString)

End Try

End Function

需要注意的是,用到的CONNECTION和COMMAND对象的声明,现在用的是

Dim conn As New Oracle.DataAccess.Client.OracleConnection

Dim cmd As New Oracle.DataAccess.Client.OracleCommand

项目中一直用的是:

Dim cmd As IDbCommand = Nothing

Dim con As IDbConnection这样给存储过程传入的参数中,没有RefCursor类型,最后还是搞定了,呵呵。

可惜领导认为这样和其他的功能在DB访问上不太一样,最后还是没有使用,

不管怎样算是了解了一点VB.NET中调用存储过程的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值