← Tutti gli articoli

Visual Basic 6 - Recordset from a Ref Cursor within a Store Procedure

01 October 2010  ·  Visual Basic 6 · Article  ·  97 visite

How to call an Oracle stored procedures, with a output ref cursor, using VB i have an adodb connection.

  
CREATE OR REPLACE PACKAGE cfsearchpkg
IS
   TYPE t_cursor  IS REF CURSOR ;
   procedure DelegaSearchCF  (pCF VARCHAR2,  io_cursor in out t_cursor );
   END cfsearchpkg;



   CREATE OR REPLACE PACKAGE BODY cfsearchpkg
   as
   procedure DelegaSearchCF
  (pCF VARCHAR2,  io_cursor in out t_cursor )
as
BEGIN
 
 open io_cursor FOR
 
 SELECT  'Cliente' as CfAs, vwdelega.*  FROM vwdelega WHERE IDDELEGA IN
 SELECT DISTINCT delega.IDDelega
 FROM
 Delega inner join cccliente  on delega.idcc=cccliente.idcc
 inner join Cliente on cccliente.idcliente=cliente.idcliente
 where cliente.cf= pCF
 )
 
 UNION
 SELECT 'Intestatario' as CfAs ,vwdelega.*  FROM vwdelega WHERE IDDELEGA IN
 SELECT DISTINCT delega.IDDelega
 FROM
 Delega inner join cccliente  on delega.idcc=cccliente.idcc
 where cccliente.cfintestatario= pCF
 )
 UNION
 SELECT 'Sottoscrittore' as CfAs  , vwdelega.* FROM vwdelega WHERE IDDELEGA IN
  SELECT DISTINCT delega.IDDelega
 FROM
 Delega inner join SOTTOSCRITTORE  on delega.idsottoscrittore=sottoscrittore.idsottoscrittore
 where sottoscrittore.cfsottoscrittore= pCF
 
 );
END;
end cfsearchpkg;
/







Dim cn As ADODB.Connection
    Dim RS As ADODB.Recordset
    Dim cmd As ADODB.Command
    Dim param As ADODB.Parameter
    Dim SQL As String
    Const CONNECT = "Provider=MSDAORA.1;Data Source=WEB;User ID=SOFIDUSR;Password=SO"
   
    Set cn = New ADODB.Connection
    cn.Open CONNECT
    Dim CF As String
    CF = "MRGGNN68B22M090M"
    SQL = "{call cfsearchpkg.DelegaSearchCFStorico(?)}"
    Set cmd = New ADODB.Command
    With cmd
        Set .ActiveConnection = cn
        .CommandText = SQL
        .CommandType = 1                'adCmdText
        'Pass in 0 to retrieve all of the records
        Set param = .CreateParameter("pCFCliente", adVarChar, adParamInputOutput, 16, CF)
        .Parameters.Append param
    End With
                   
    Set RS = New ADODB.Recordset
    Set RS = cmd.execute
    While Not RS.EOF
        List1.AddItem (RS("cfas") & "--" & RS("IDDELEGA") & "-" & Trim(RS("CODICESOCIETA")) & Trim(RS("CODICEDELEGA")))
       
        RS.MoveNext
    Wend
Si è verificato un errore imprevisto. Ricarica

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.