我在ORACLE那创建一个包!
CREATE OR REPLACE PACKAGE JZBMAP.pkg_test
as
type t_name is table of degree.name%type INDEX BY BINARY_INTEGER;
PROCEDURE getForums(forumname OUT t_name);
end pkg_test;
CREATE OR REPLACE PACKAGE BODY JZBMAP.Pkg_test
as
PROCEDURE getForums(forumname OUT t_name)
is
CURSOR c1 is
select name from degree ;
nums number defaULT 1;
BEGIN
for c in c1
loop
forumname(nums):=c.name;
nums:=nums+1 ;
end loop;
END;
end ;
现在要在VB里面调用这个包的过程!并把返回的结果集附值给RS
如
dim rs as new db.recordset
dim comm as new db.command
with comm
.ActiveConnection = Cn 'Cn已经定义
.CommandType = adCmdStoredProc
.CommandText = "pkg_test.getForums"
set rs=.execute()
end with
这样有问题!请问怎样实现!
---------------------------------------------------------------
我给你我的一个执行你的类似包的vb代码,我一直在用,是可以的。
Public Function fReceiveCandImage(ByVal RemoteID As String, ByVal ResponseID As Long, ocKeyNo As String, oiFingerNo As Integer) As Boolean
Dim rsR As New ADODB.Recordset
Dim cmdR As ADODB.Command
Dim Pram As ADODB.Parameter
'//写日志
Call WriteToSendLog("开始接收候补图象信息, ResponseID = " & ResponseID)
On Error GoTo fReceiveCandImageErr
'//执行以上过程
Set cmdR = New ADODB.Command
With cmdR
.CommandText = "{call pkgRemote.sp_Get_CandidateImg(?,?,{resultset 0, io_cursor})}"
.CommandType = adCmdText 'adCmdText
Set Pram = .CreateParameter("iRemote_ID_I", adBSTR, adParamInput, , RemoteID)
.Parameters.Append Pram
Set Pram = .CreateParameter("iResponseID", adInteger, adParamInput, , ResponseID)
.Parameters.Append Pram
End With
'//得到记录集
rsR.CursorType = adOpenStatic
rsR.LockType = adLockReadOnly
Set cmdR.ActiveConnection = CNRemote 'CNRemote是一个ADO的连接
Set rsR.Source = cmdR
'set fExecuteOneCommand = CNRemote.Execute '这是另一种执行方式
rsR.Open
'//如果没有记录集,过程执行不成功
If rsR Is Nothing Then
Call WriteToSendLog("读取远程remote数据库发生错误")
fReceiveCandImage = False
GoTo fReceiveCandImageErr
End If
'//如果记录集为空,没有取到数据
If rsR.EOF Then
Call WriteToSendLog("没有该图象供接收:ResponseID = " & ResponseID)
fReceiveCandImage = False
GoTo fReceiveCandImageExit
End If
'//函数执行成功,数据获取成功
fReceiveCandImage = True
Call WriteToSendLog("接收候补图像结束")
fReceiveCandImageExit:
If rsR.Status = adStateOpen Then rsR.Close
Set rsR = Nothing
If Not (cmdR Is Nothing) Then Set cmdR = Nothing
On Error GoTo 0
Exit Function
fReceiveCandImageErr:
Call WriteToSendLog("接收候补图像失败:" & Err.Description)
fReceiveCandImage = False
GoTo fReceiveCandImageExit
End Function