none
Como chamar uma store procedure com vb6 e ado RRS feed

  • Pergunta

  • Bom dia Pessoal,

    Tenho uma store procedure no oracle que executa um select no banco e retorna apenas 1 registro. Ela possui 3 parametros (inteiro, char e cursor). Como faço para executá-la a partit do vb6 usando ADO?

    obrigada

    Nádia

    segunda-feira, 26 de junho de 2006 14:34

Respostas

  • Olá Teles

    Acho que você levantou essa questão em outro post, certo? Bem, no Oracle, quando há um ou mais parâmetros de saída do tipo REF CURSOR, o tratamento é diferente. É preciso chamar a SP de uma outra maneira:

        With cmd
            Set .ActiveConnection = CNP
           
    .CommandText = "{CALL PACOTE.DADOS_PESSOA(?, ?, {resultset 0, meu_cursor})}"
            .CommandType = adCmdStoredProc
        End With

    Dê uma investigada, como não tenho um db Oracle aqui, não consegui testar, mas tenho certeza que o caminho é esse.

    Boa sorte!!!

    quinta-feira, 29 de junho de 2006 13:12
  • Nádia,

     

    Tenta o seguinte:

    após o  código [ .CommandText = "sp_retornar_registro" ] coloque:

     

    .Properties("PLSQLRSet") = True

     

    e após a execução [ Set rst = cmd.Execute()  ] coloque:

     

    .Properties("PLSQLRSet") = False

     

    MNC

    sexta-feira, 29 de fevereiro de 2008 18:09

Todas as Respostas

  • Use a classe ADODB.Command para excutar a SP e assciar parametros à mesma.

    Boa sorte!!!

    Dim cnn As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim par_codigo As ADODB.Parameter
    Dim par_nome As ADODB.Parameter
    Dim rst As ADODB.RecordSet
        
    cnn.ConnectionString = "<...>"
    cnn.Open

    Set cmd = New ADODB.Command
    With cmd
        Set .ActiveConnection = cnn
        .CommandType = adCmdStoredProc
        .CommandText = "sp_retornar_registro"
    End With
       
    Set par_codigo = cmd.CreateParameter("@codigo", adInteger, adParamInput)
    Set par_nome = cmd.CreateParameter("@nome", adVarChar, adParamInput)

    par_codigo.Value = 10
    par_nome.Value = "Teste"

    cmd.Parameters.Append par_codigo
    cmd.Parameters.Append par_nome

    Set rst = cmd.Execute()

    Do Until rst.EOF
        MsgBox rst.Fileds(0)
        rst.MoveNext
    Loop

    segunda-feira, 26 de junho de 2006 22:28
  • Denis,

    Fiz exatamente como seu exemplo, mas o erro aparece no comando executar. Veja:

    Numero incorreto de tipos de argumentos na chamada para DADOS_PESSOA

    ORA-06550: linha 1 coluna 7

    O que deve estar errado?

    obrigada

    Nádia

     

    quarta-feira, 28 de junho de 2006 18:26
  • Olá Teles

    Acho que você levantou essa questão em outro post, certo? Bem, no Oracle, quando há um ou mais parâmetros de saída do tipo REF CURSOR, o tratamento é diferente. É preciso chamar a SP de uma outra maneira:

        With cmd
            Set .ActiveConnection = CNP
           
    .CommandText = "{CALL PACOTE.DADOS_PESSOA(?, ?, {resultset 0, meu_cursor})}"
            .CommandType = adCmdStoredProc
        End With

    Dê uma investigada, como não tenho um db Oracle aqui, não consegui testar, mas tenho certeza que o caminho é esse.

    Boa sorte!!!

    quinta-feira, 29 de junho de 2006 13:12
  • Nádia,

     

    Tenta o seguinte:

    após o  código [ .CommandText = "sp_retornar_registro" ] coloque:

     

    .Properties("PLSQLRSet") = True

     

    e após a execução [ Set rst = cmd.Execute()  ] coloque:

     

    .Properties("PLSQLRSet") = False

     

    MNC

    sexta-feira, 29 de fevereiro de 2008 18:09