none
parametro de procedure com erro RRS feed

  • Pergunta

  • estou tentando enviar uma valor qualquer para a procedure realizar um insert

    porem quando o valor é cadastrado no sql server

    ele acrescenta  ".00" no final do valor informado

     

    ou seja

     

    quero cadastrar o valor 2500.00 e ele cadastra 250000.00

     

    na hora da procedure receber o parametro ,

    eu prototipei como float "@verba float"

    e ele esta cadastrado no banco de dados como float

     

    só acontece isso com a chamda da procedure

    com query normal, não acontece

     

    o que pode ser isso???

     

    meu codigo da chamada da procedura abaixo:

     

     '-Cria um comand no SQL
     Set cmdatualiza = Server.CreateObject("ADODB.Command")


     '-Define a Conexao a ser usada
     Set cmdatualiza.ActiveConnection = cnnobj


     '-Conecta a página com a Procedure SP_CriaJob
     cmdatualiza.CommandText = "ooh.SP_CriaJob"


     cmdatualiza.CommandType =  4   
     cmdatualiza.ParameteRs.Refresh


     '-PROCEDURE RECEBE O PARAMETRO
     cmdatualiza.ParameteRs("@verba") = VERBA

     

     'Executa a Procedure
     cmdatualiza.Execute

     

     'Fecha a Procedure
     Set cmdatualiza = Nothing

    quinta-feira, 31 de janeiro de 2008 13:46

Todas as Respostas

  •  

     quando vc. envia a variaavel esta enviando padrao numrrico portugues ou ingles, experimente trocar .  (ponto)  por , (virugla)  e , (virgula) por  . (ponto)  para testar

     

    quinta-feira, 31 de janeiro de 2008 13:59
  • o meu bando de dados recebe valor com ponto (padrão americano)

     

    ou seja

     

    34.67

    200.50

    200000.40

     

    desse tipo

     

    eu no asp, ja faço essa conversão

    quinta-feira, 31 de janeiro de 2008 14:05
  • altre o seu parametro do command para decimal, quantas casas vc. precisa de precisao ?

     

    quinta-feira, 31 de janeiro de 2008 14:52
  •  

    como assim alterar os parametros do command???

    eu só passo parametro pra função

     

    olhe o exemplo acima

     

    eu preciso de precisão , 2 casas de precisão

     

    é sufisciente

    quinta-feira, 31 de janeiro de 2008 15:35
  • um conselho de vc. precisa so de duas casas o legal e usar um decimal ou numeric, e muito mais simples de manipular. quando vc. chama o command vc. nao passa o tipo de dados do parameter que vc. vai passar ?

     

    quinta-feira, 31 de janeiro de 2008 15:46
  • Não, não passo o tipo não

     

    faço da seguinte forma:

     

    cmdatualiza.ParameteRs("@verba") = VERBA

     

    sendo:

     

    VERBA = 2500.55

     

    quando é cadastrado no banco de dados

    o valor fica 250055.00

    quinta-feira, 31 de janeiro de 2008 16:37
  • qual o conteudo de VERBA ?
    quinta-feira, 31 de janeiro de 2008 16:41
  • o conteudo da verba depende

     

    mas podemos assumir o exemplo acima

     

     

    EIS ALGUNS EXEMPLOS

     

    VERBA = 3400.50

    VERBA = 2500.00

    quinta-feira, 31 de janeiro de 2008 16:47
  • veja

     

    create Table tabela  (verba float)

    Create proc Teste @Verba Float
    as

      Insert into Tabela (verba) Values (@Verba)

    exec teste 1515.11

    select * from Tabela

     

     

    eu fiz o teste no Query analiser, se vc. rodar a sua proc no QA como fica ?

     

     

    quinta-feira, 31 de janeiro de 2008 16:50
  • Acho que você deve alterar seu código para informar para o objeto Commando que você está executando uma SP e que o parâmetro verba é um adDouble.

    Para informar para o Command o tipo de comando que vai utilizar veja a linha abaixo:
    cmdatualiza.CommandType = adCmdStoredProc

    Logo depois que você criar o parâmetro, informe que ele é do tipo adDouble
    cmdatualiza.Parameters("@verba").Type = adDouble



    quinta-feira, 31 de janeiro de 2008 17:47
  • executei a procedure direto pelo query analizer e o valor ficou ok

     

     

    execute ooh.SP_CriaJob 2500.55

     

    isso descarta a ipotese de ser a procedure?

     

     

    quinta-feira, 31 de janeiro de 2008 19:05
  • isso mesmo,  seu problema esta do lado da aplicacao, outro teste ao invez de passar o valor pela variavel passe um valor fixo para testar.

     

    Abs;

     

    sexta-feira, 1 de fevereiro de 2008 09:22