
HELP ==>Oracle Stored Procedure(PACKAGE) using ADO(VB)
HELP ==>Oracle Stored Procedure(PACKAGE) using ADO(VB)
============ ( ORACLE ) ==========================
CREATE OR REPLACE PACKAGE packperson AS
TYPE tssn is TABLE of NUMBER(10)
INDEX BY BINARY_INTEGER;
TYPE tfname is TABLE of VARCHAR2(15)
INDEX BY BINARY_INTEGER;
TYPE tlname is TABLE of VARCHAR2(20)
INDEX BY BINARY_INTEGER;
TYPE tkname is TABLE of VARCHAR2(20)
INDEX BY BINARY_INTEGER;
PROCEDURE oneperson
(onessn IN NUMBER,
ssn OUT tssn,
fname OUT tfname,
lname OUT tlname);
END packperson;
CREATE OR REPLACE PACKAGE BODY packperson AS
PROCEDURE oneperson
(onessn IN NUMBER,
ssn OUT tssn,
fname OUT tfname,
lname OUT tlname)
IS
CURSOR person_cur IS
SELECT ssn,fname,lname
FROM person
WHERE ssn = onessn;
percount NUMBER DEFAULT 1;
BEGIN
FOR SINGLEPERSON IN person_cur
LOOP
ssn(percount) := SINGLEPERSON.ssn;
fname(percount) := SINGLEPERSON.fname;
lname(percount) := SINGLEPERSON.lname;
percount := percount + 1;
END LOOP;
END;
END;
=========== ( VB ) ==================================
Sub Command1_Click()
Dim mConn As ADODB.Connection
Dim mrsSelect As ADODB.Recordset
Dim mCmd As ADODB.Command
Dim msSelect As String
Dim mCmdPrm As New ADODB.Parameter
Dim sConnect As String
'*******************************
'* Open a database connection. *
'*******************************
sConnect = "Data Source=<MY_DS>;User ID=<MY_UID>;Password=<MY_PWD>;"
Set mCnn = New ADODB.Connection
With mCnn
.CommandTimeout = 10
.CursorLocation = adUseClient
.Provider = "MSDAORA"
.Open sConnect
End With
'****************************************
'* Create the stored procedure context. *
'****************************************
msSelect = "{call packperson.oneperson (?, { resultset 9,
ssn,fname,lname } ) }"
Set mCmd = New ADODB.Command
'*********************************
'* Create the parameter context. *
'*********************************
With mCmd
.CommandText = msSelect
.CommandType = adCmdText
.ActiveConnection = mCnn
Set mCmdPrm = .CreateParameter("onessn", adInteger, adParamInput )
^^
||
?????????????
.Parameters.Append mCmdPrm
End With
'**********************************
'* Dispatch the stored procedure. *
'**********************************
Set mrsSelect = New ADODB.Recordset
mCmd(0) = 2
Set mrsSelect = mCmd.Execute <=== HELP
^^^
|||
error ( ... seek ... not... factor.... ) ...?????????
**== i can not English ==**
'********************
'* Display results. *
'********************
MsgBox mrsSelect.Fields(1)
mrsSelect.MoveNext
End Sub