none
Storer procedure mysql vb6 RRS feed

  • Pergunta

  • Bom dia, 
    Estou começando a trabalhar com vb6 agora, antes só trabalhava com vba, recebi o desafio de criar uma aplicação para trabalhar online, e com o Access a aplicação ficaria lenta, pois no access não tem como executar SP's. Ai é que começa meu dilema, criei a seguinte SP no mysql:

    DELIMITER $$

    DROP PROCEDURE IF EXISTS `teste` $$
    CREATE DEFINER=`altair`@`localhost` PROCEDURE `teste`()
    BEGIN
    select resp from cliente where codclie =  codigo_cliente;
    END $$

    DELIMITER ;


    E meu form tem a seguinte código:


    Private Sub Command1_Click()
    Set RS1 = New ADODB.Recordset
    Dim comando As ADODB.Command
    Set comando = New ADODB.Command
    With comando
        .CommandType = adCmdStoredProc
        .CommandText = "teste"
        .Parameters.Append comando.CreateParameter("codclie", adInteger)
        .Parameters.Append comando.CreateParameter("tipo", adInteger)
        .Parameters.Append comando.CreateParameter("resp", adChar, adParamOutput, 30)
                    
        
            .Parameters("codclie") = codigo_cliente
        
        
        .Parameters("tipo").Value = Null
        .Parameters("resp").Value = Null
        
        .ActiveConnection = conn
    End With

    Set RS1 = comando.Execute

       Exit Sub
    nome_responsavel = RS1!resp

    End Sub


    e dá o seguinte erro:

    incorret of arguments for procedure portador.teste; expeceted 0, got 1


    Alguém sabe como me ajudar
    sexta-feira, 4 de março de 2011 13:21

Respostas

  • Oi Altair .

     

    Segue um exemplo explicando de uma SP no Mysql.

    Esta SP é de um select na tabela pais

    DELIMITER $$
    DROP PROCEDURE IF EXISTS `listar_paises` $$
    CREATE PROCEDURE `listar_paises`(IN _id INT)
    <= "este é o local que declara a variável  ela é do tipo int como na tabela do banco de dados, o nome da variável é _id”
    BEGIN
          IF (_id IS NULL) THEN <="este IF verifica se a variável _id recebeu algum parâmetro da aplicação, sé ela não recebeu nenhum parâmetro ela executa o select logo abaixo 
            SELECT * FROM pais;<= “select sem passar nenhum parâmetro para variável”
          ELSE
            SELECT *  FROM pais where id_pais = _id;
    <=”Select passando parâmetro para a variável”
          END IF;

       END $$
    DELIMITER;

     

    Espero que isso ajude na solução do seu problema, qualquer coisa é só informar, ok

     

    sábado, 5 de março de 2011 05:46

Todas as Respostas

  • Oi Altair ...

     

    Este erro provavelmente é causado por parametros incorretos na SP ,  ou no seu código da aplicação ...

    você declarou no código da sua aplicação ".Parameters("codclie") = codigo_cliente"  mas eu não estou vendo na sua SP nenhum variavel declarada .

    Desculpe se eu estiver falando besteira , mas eu não manjo muito de mysql , mas quando criamos uma SP de pesquisa , e nesta pesquisa  vai ter criterios de busca ,como busca por código ou etc .

    Voce tem que declarar a variavel na SP e o tipo da variavel tem que ser do mesmo tipo que esta no banco , e passar o paramentro para a variavel pelo código da sua aplicação .

     

    qualquer coisa estamo ai , ok .....

     

     

    sábado, 5 de março de 2011 00:19
  • Bom imaginei que o erro estaria mesmo na SP, mas se vc tiver alguma idéia, como que eu declararia essa varíavel na SP.

     

    Obrigado.

    sábado, 5 de março de 2011 01:43
  • Oi Altair .

     

    Segue um exemplo explicando de uma SP no Mysql.

    Esta SP é de um select na tabela pais

    DELIMITER $$
    DROP PROCEDURE IF EXISTS `listar_paises` $$
    CREATE PROCEDURE `listar_paises`(IN _id INT)
    <= "este é o local que declara a variável  ela é do tipo int como na tabela do banco de dados, o nome da variável é _id”
    BEGIN
          IF (_id IS NULL) THEN <="este IF verifica se a variável _id recebeu algum parâmetro da aplicação, sé ela não recebeu nenhum parâmetro ela executa o select logo abaixo 
            SELECT * FROM pais;<= “select sem passar nenhum parâmetro para variável”
          ELSE
            SELECT *  FROM pais where id_pais = _id;
    <=”Select passando parâmetro para a variável”
          END IF;

       END $$
    DELIMITER;

     

    Espero que isso ajude na solução do seu problema, qualquer coisa é só informar, ok

     

    sábado, 5 de março de 2011 05:46