﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-cloud Yang-文章分类-VS.NET</title><link>http://www.cnitblog.com/cloud_soft/category/669.html</link><description>该考虑个人问题了？！</description><language>zh-cn</language><lastBuildDate>Fri, 07 Oct 2011 00:27:59 GMT</lastBuildDate><pubDate>Fri, 07 Oct 2011 00:27:59 GMT</pubDate><ttl>60</ttl><item><title>今天搞好了VB.NET调用Oracle存储过程返回游标的问题</title><link>http://www.cnitblog.com/cloud_soft/articles/2278.html</link><dc:creator>Yang</dc:creator><author>Yang</author><pubDate>Tue, 23 Aug 2005 11:14:00 GMT</pubDate><guid>http://www.cnitblog.com/cloud_soft/articles/2278.html</guid><wfw:comment>http://www.cnitblog.com/cloud_soft/comments/2278.html</wfw:comment><comments>http://www.cnitblog.com/cloud_soft/articles/2278.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/cloud_soft/comments/commentRss/2278.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/cloud_soft/services/trackbacks/2278.html</trackback:ping><description><![CDATA[<P><FONT style="BACKGROUND-COLOR: #ffffff" size=2>代码：<BR>&nbsp;&nbsp;&nbsp; Public Function GetData(ByVal procDate As String) As ArrayList<BR></FONT><FONT style="BACKGROUND-COLOR: #ffffff" size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Try<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim conn As New Oracle.DataAccess.Client.OracleConnection<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim cmd As New Oracle.DataAccess.Client.OracleCommand<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.ConnectionString = constring<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmd.Connection = conn<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmd.CommandType = CommandType.StoredProcedure<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmd.CommandText = "xxxxxxx.xxxxx"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.Open()</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff" size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim para1 As New Oracle.DataAccess.Client.OracleParameter<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim para2 As New Oracle.DataAccess.Client.OracleParameter<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim rdr As Oracle.DataAccess.Client.OracleDataReader</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff" size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; With cmd<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Parameters.Clear()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Parameters.Add("procDate", Oracle.DataAccess.Client.OracleDbType.Varchar2) _<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Value = procDate<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Parameters.Add("objCur", Oracle.DataAccess.Client.OracleDbType.RefCursor) _<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Direction = ParameterDirection.Output<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End With</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff" size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim ds As DataSet = New DataSet<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim oraDa As Oracle.DataAccess.Client.OracleDataAdapter = _&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; New Oracle.DataAccess.Client.OracleDataAdapter(cmd)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dt As DataTable<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oraDa.Fill(ds)</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff" size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dt = ds.Tables(0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dtList As New ArrayList<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Not dt Is Nothing AndAlso dt.Rows.Count &gt; 0 Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim iCount As Integer<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For iCount = 0 To dt.Rows.Count - 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtList.Add(CStr(dt.Rows(iCount).Item(0)) &amp; " " &amp; CStr(dt.Rows(iCount).Item(1)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Return dtList<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Catch ex As Exception<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox(ex.ToString)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Try</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff" size=2>&nbsp;&nbsp;&nbsp; End Function&nbsp; <BR><BR><BR>需要注意的是，用到的CONNECTION和COMMAND对象的声明，现在用的是<BR><FONT color=#0000ff>Dim conn As New Oracle.DataAccess.Client.OracleConnection<BR>Dim cmd As New Oracle.DataAccess.Client.OracleCommand<BR><BR><FONT color=#000000>项目中一直用的是：</FONT><BR><FONT color=#808080>Dim cmd As IDbCommand = Nothing<BR>Dim con As IDbConnection&nbsp; <BR></FONT><FONT color=#000000>这样给存储过程传入的参数中，没有RefCursor类型，最后还是搞定了，呵呵。<BR>可惜领导认为这样和其他的功能在DB访问上不太一样，最后还是没有使用，<BR>不管怎样算是了解了一点VB.NET中调用存储过程的方法。<BR></FONT><BR></FONT><BR></FONT></P><img src ="http://www.cnitblog.com/cloud_soft/aggbug/2278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/cloud_soft/" target="_blank">Yang</a> 2005-08-23 19:14 <a href="http://www.cnitblog.com/cloud_soft/articles/2278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>