Con il seguente codice cerco di invocare dal mio client una stored procedure in oracle:

codice:
Public Function ControllaCFBrasile(cf As String, tipo As String, msgErr As String) As Integer

    strSql = "{?={call sial_gestione_lav_esterni.ctrl_codice_fiscale(?,?,?)}"

    Set Com = this.ISIALApplication_SIALDatabase.command
    With Com
        .CommandText = strSql
        .CommandType = adCmdText
        .Parameters.Append .CreateParameter("RetVal", adInteger, 1, adParamReturnValue)
        .Parameters.Append .CreateParameter("i_codice_fiscale", adVarChar, adParamInput, 30, Trim(cf))
        .Parameters.Append .CreateParameter("i_tipo", adVarChar, adParamInput, 3, tipo)
        .Parameters.Append .CreateParameter("o_msg_err", adVarChar, adParamOutput, 1000, msgErr)
        .Execute
    End With

    ControllaCFBrasile = command("RetVal").Value
    msgErr = command("msgErr").Value
    
End Function
Premesso che i parametri di input alla funzione arrivano correttamente, quando cerca di effettuare la Excecute, mi restituisce il messaggio dell'oggetto; mentre se con gli stessi parametri eseguo la stored direttamente da oracle, la stessa funziona correttamente determinando l'esito se positivo o negativo.

Cosa sbaglio?

Grazie anticipatamente.