Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dands

Stored Procedure - Oracle - ADODB

Recommended Posts

Olá,

 

Estou tendo um pequeno problema com uma Stored Procedure, estou tentando acessá-la em um banco de dados remoto, a conexão está perfeita, a procedure existe, já vi toda a estrutura da procedure atraves do SQL*Plus dando um "desc" e etc. Porem ao tentar executar a procedure dá o maldito erro:

 

OraOLEDB error '80040e14'

 

ORA-06550: line 1, column 13: PLS-00306: wrong number or types of arguments in call to 'PRC_GRAVA_PEDIDOS' ORA-06550: line 1, column 7: PL/SQL: Statement ignored

 

A linha de erro é a de execução da procedure.

 

Estou utilizando o seguinte código:

set objComm = Server.CreateObject("ADODB.Command") 
				
objComm.ActiveConnection = OraDB
objComm.CommandType = 4
objComm.CommandText = "prc_grava_pedidos"

set vPRP_CODIGO = objComm.CreateParameter("V_PRP_CODIGO", adNumeric, adParamReturnValue, 6)
set vCLI_CODIGO = objComm.CreateParameter("V_CLI_CODIGO", adNumeric, adParamInput, , 5465)
set vPRP_RAZAOSOCIAL = objComm.CreateParameter("V_PRP_RAZAOSOCIAL", adVariant, adParamInput, 12, "NOME DO CLIENTE")
set vPRP_DATAEMISSAO = objComm.CreateParameter("V_PRP_DATAEMISSAO", adDBDate, adParamInput, , "20/1/2009") 
set vPRP_VALORTOTAL = objComm.CreateParameter("V_PRP_VALORTOTAL", adNumeric, adParamInput, 131, "166,45")
set vCPG_CODIGO = objComm.CreateParameter("V_CPG_CODIGO", adNumeric, adParamInput, 131, 82)
set vPRP_CLIENTEFD = objComm.CreateParameter("V_PRP_CLIENTEFD", adNumeric, adParamInput, 131, 0)
set vPRP_VALORTOTALFD = objComm.CreateParameter("V_PRP_VALORTOTALFD", adNumeric, adParamInput, 131, 0)
set vTRA_CODIGO = objComm.CreateParameter("V_TRA_CODIGO", adNumeric, adParamInput, 131, 4)
set vPRP_VALORFRETE = objComm.CreateParameter("V_PRP_VALORFRETE", adNumeric, adParamInput, 131, "5,00")
set vPRP_TIPO = objComm.CreateParameter("V_PRP_TIPO", adVariant, adParamInput, 12, "P")
set vUSUARIO = objComm.CreateParameter("V_USUARIO", adVariant, adParamInput, 12, "USUARIO_WEB")
set vPRP_EMAIL = objComm.CreateParameter("V_PRP_EMAIL", adVariant, adParamInput, 12, "email@email.com.br")
set vPRP_FRETETIPO = objComm.CreateParameter("V_PRP_FRETETIPO", adVariant, adParamInput, 12, "F")
set vPRP_FORMAPAGAMENTO = objComm.CreateParameter("V_PRP_FORMAPAGAMENTO", adNumeric, adParamInput, 131, 4)
set vMENSAGEM_ERRO = objComm.CreateParameter("V_MENSAGEM_ERRO", adVarChar, adParamReturnValue, 200)
			
objComm.Parameters.Append(vPRP_CODIGO)
objComm.Parameters.Append(vCLI_CODIGO)
objComm.Parameters.Append(vPRP_RAZAOSOCIAL) 
objComm.Parameters.Append(vPRP_DATAEMISSAO) 
objComm.Parameters.Append(vPRP_VALORTOTAL)
objComm.Parameters.Append(vCPG_CODIGO)
objComm.Parameters.Append(vPRP_CLIENTEFD)D
objComm.Parameters.Append(vPRP_VALORTOTALFD)
objComm.Parameters.Append(vTRA_CODIGO)
objComm.Parameters.Append(vPRP_VALORFRETE)
objComm.Parameters.Append(vPRP_TIPO) 
objComm.Parameters.Append(vUSUARIO) 
objComm.Parameters.Append(vPRP_EMAIL) 
objComm.Parameters.Append(vPRP_FRETETIPO) 
objComm.Parameters.Append(vPRP_FORMAPAGAMENTO) 
objComm.Parameters.Append(vMENSAGEM_ERRO) 
		
objComm.Execute 
		
PROPOSTA_CODIGO = objComm.Parameters("V_PRP_CODIGO").value
		
set objComm = nothing

Essa aqui é a descrição da procedure:

 

PROCEDURE prc_grava_pedidos

Nome do Argumento Tipo In/Out Default?

------------------------------ ----------------------- ------ --------

V_PRP_CODIGO NUMBER(6) OUT

V_CLI_CODIGO NUMBER IN

V_PRP_RAZAOSOCIAL VARCHAR2 IN

V_PRP_DATAEMISSAO DATE IN

V_PRP_VALORTOTAL NUMBER IN

V_CPG_CODIGO NUMBER IN

V_PRP_CLIENTEFD NUMBER(6) IN

V_PRP_VALORTOTALFD NUMBER IN

V_TRA_CODIGO NUMBER IN

V_PRP_VALORFRETE NUMBER IN

V_PRP_TIPO VARCHAR2 IN

V_USUARIO VARCHAR2 IN

V_PRP_EMAIL VARCHAR2 IN

V_PRP_FRETETIPO VARCHAR2 IN

V_PRP_FORMAPAGAMENTO NUMBER(6) IN

V_MENSAGEM_ERRO VARCHAR2 OUT

 

Será que alguem sabe como resolver isso? Obrigado...

 

Dands

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este erro ocorre quando você envia menos paramentros ou mais paramentos do que sua procedure espera.

 

Ja verificou para ver se os parametros que esta enviando são em mesma quantidade que ela espara receber inclusive os tipos de dados enviados para cada um deles ?

 

tenta ai e posta o resultado.

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este erro ocorre quando você envia menos paramentros ou mais paramentos do que sua procedure espera.

 

Ja verificou para ver se os parametros que esta enviando são em mesma quantidade que ela espara receber inclusive os tipos de dados enviados para cada um deles ?

 

tenta ai e posta o resultado.

 

abraços

Nossa resposta rápida... :)

 

Então... são esssas variaveis mesmo... 14 de entrada e 2 retornos.

 

Eu colei no post a descrição da procedure, inclundo os "data type" de cada variavel. Eu já verifiquei isso tudo. Agora se você fala de parametros como quantidade de caracteres de cada variavel, ai já não sei, como são variaveis, as previsiveis são apenas numéricos, o resto como "RAZAOSOCIAL" pode ser "N" caracteres...

 

Vlw... abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta add valor as variaveis de retorno. Valores vaziu mesmo como "" aspas duplas sem nada ou só com espaço e posta o resultado.

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta add valor as variaveis de retorno. Valores vaziu mesmo como "" aspas duplas sem nada ou só com espaço e posta o resultado.

 

abraços

Eu já tentei, ele dá erro falando que está errado par o tipo de argumento, no caso como é retorno não tem que ter a virgula lá no final.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta estes dois codigos abaixo...

 

abraços

 

 

set objComm = Server.CreateObject("ADODB.Command") 
				
objComm.ActiveConnection = OraDB
objComm.CommandType = 4
objComm.CommandText = "prc_grava_pedidos"

set vPRP_CODIGO = objComm.CreateParameter("V_PRP_CODIGO", adNumeric, adParamReturnValue, 6)
set vCLI_CODIGO = objComm.CreateParameter("V_CLI_CODIGO", adNumeric, adParamInput, , 5465)
set vPRP_RAZAOSOCIAL = objComm.CreateParameter("V_PRP_RAZAOSOCIAL", adVariant, adParamInput, 12, "NOME DO CLIENTE")
set vPRP_DATAEMISSAO = objComm.CreateParameter("V_PRP_DATAEMISSAO", adDBDate, adParamInput, , "20/1/2009") 
set vPRP_VALORTOTAL = objComm.CreateParameter("V_PRP_VALORTOTAL", adNumeric, adParamInput, 131, "166,45")
set vCPG_CODIGO = objComm.CreateParameter("V_CPG_CODIGO", adNumeric, adParamInput, 131, 82)
set vPRP_CLIENTEFD = objComm.CreateParameter("V_PRP_CLIENTEFD", adNumeric, adParamInput, 131, 0)
set vPRP_VALORTOTALFD = objComm.CreateParameter("V_PRP_VALORTOTALFD", adNumeric, adParamInput, 131, 0)
set vTRA_CODIGO = objComm.CreateParameter("V_TRA_CODIGO", adNumeric, adParamInput, 131, 4)
set vPRP_VALORFRETE = objComm.CreateParameter("V_PRP_VALORFRETE", adNumeric, adParamInput, 131, "5,00")
set vPRP_TIPO = objComm.CreateParameter("V_PRP_TIPO", adVariant, adParamInput, 12, "P")
set vUSUARIO = objComm.CreateParameter("V_USUARIO", adVariant, adParamInput, 12, "USUARIO_WEB")
set vPRP_EMAIL = objComm.CreateParameter("V_PRP_EMAIL", adVariant, adParamInput, 12, "email@email.com.br")
set vPRP_FRETETIPO = objComm.CreateParameter("V_PRP_FRETETIPO", adVariant, adParamInput, 12, "F")
set vPRP_FORMAPAGAMENTO = objComm.CreateParameter("V_PRP_FORMAPAGAMENTO", adNumeric, adParamInput, 131, 4,"")
set vMENSAGEM_ERRO = objComm.CreateParameter("V_MENSAGEM_ERRO", adVarChar, adParamReturnValue, 200, "")
			
objComm.Parameters.Append(vPRP_CODIGO)
objComm.Parameters.Append(vCLI_CODIGO)
objComm.Parameters.Append(vPRP_RAZAOSOCIAL) 
objComm.Parameters.Append(vPRP_DATAEMISSAO) 
objComm.Parameters.Append(vPRP_VALORTOTAL)
objComm.Parameters.Append(vCPG_CODIGO)
objComm.Parameters.Append(vPRP_CLIENTEFD)D
objComm.Parameters.Append(vPRP_VALORTOTALFD)
objComm.Parameters.Append(vTRA_CODIGO)
objComm.Parameters.Append(vPRP_VALORFRETE)
objComm.Parameters.Append(vPRP_TIPO) 
objComm.Parameters.Append(vUSUARIO) 
objComm.Parameters.Append(vPRP_EMAIL) 
objComm.Parameters.Append(vPRP_FRETETIPO) 
objComm.Parameters.Append(vPRP_FORMAPAGAMENTO) 
objComm.Parameters.Append(vMENSAGEM_ERRO) 
		
objComm.Execute 
		
PROPOSTA_CODIGO = objComm.Parameters("V_PRP_CODIGO").value
		
set objComm = nothing

OU

 

 

set objComm = Server.CreateObject("ADODB.Command") 
				
objComm.ActiveConnection = OraDB
objComm.CommandType = 4
objComm.CommandText = "prc_grava_pedidos"

set vPRP_CODIGO = objComm.CreateParameter("V_PRP_CODIGO", adNumeric, adParamReturnValue, 6)
set vCLI_CODIGO = objComm.CreateParameter("V_CLI_CODIGO", adNumeric, adParamInput, , 5465)
set vPRP_RAZAOSOCIAL = objComm.CreateParameter("V_PRP_RAZAOSOCIAL", adVariant, adParamInput, 12, "NOME DO CLIENTE")
set vPRP_DATAEMISSAO = objComm.CreateParameter("V_PRP_DATAEMISSAO", adDBDate, adParamInput, , "20/1/2009") 
set vPRP_VALORTOTAL = objComm.CreateParameter("V_PRP_VALORTOTAL", adNumeric, adParamInput, 131, "166,45")
set vCPG_CODIGO = objComm.CreateParameter("V_CPG_CODIGO", adNumeric, adParamInput, 131, 82)
set vPRP_CLIENTEFD = objComm.CreateParameter("V_PRP_CLIENTEFD", adNumeric, adParamInput, 131, 0)
set vPRP_VALORTOTALFD = objComm.CreateParameter("V_PRP_VALORTOTALFD", adNumeric, adParamInput, 131, 0)
set vTRA_CODIGO = objComm.CreateParameter("V_TRA_CODIGO", adNumeric, adParamInput, 131, 4)
set vPRP_VALORFRETE = objComm.CreateParameter("V_PRP_VALORFRETE", adNumeric, adParamInput, 131, "5,00")
set vPRP_TIPO = objComm.CreateParameter("V_PRP_TIPO", adVariant, adParamInput, 12, "P")
set vUSUARIO = objComm.CreateParameter("V_USUARIO", adVariant, adParamInput, 12, "USUARIO_WEB")
set vPRP_EMAIL = objComm.CreateParameter("V_PRP_EMAIL", adVariant, adParamInput, 12, "email@email.com.br")
set vPRP_FRETETIPO = objComm.CreateParameter("V_PRP_FRETETIPO", adVariant, adParamInput, 12, "F")
set vPRP_FORMAPAGAMENTO = objComm.CreateParameter("V_PRP_FORMAPAGAMENTO", adNumeric, adParamInput, 131, 4,NULL)
set vMENSAGEM_ERRO = objComm.CreateParameter("V_MENSAGEM_ERRO", adVarChar, adParamReturnValue, 200, NULL)
			
objComm.Parameters.Append(vPRP_CODIGO)
objComm.Parameters.Append(vCLI_CODIGO)
objComm.Parameters.Append(vPRP_RAZAOSOCIAL) 
objComm.Parameters.Append(vPRP_DATAEMISSAO) 
objComm.Parameters.Append(vPRP_VALORTOTAL)
objComm.Parameters.Append(vCPG_CODIGO)
objComm.Parameters.Append(vPRP_CLIENTEFD)D
objComm.Parameters.Append(vPRP_VALORTOTALFD)
objComm.Parameters.Append(vTRA_CODIGO)
objComm.Parameters.Append(vPRP_VALORFRETE)
objComm.Parameters.Append(vPRP_TIPO) 
objComm.Parameters.Append(vUSUARIO) 
objComm.Parameters.Append(vPRP_EMAIL) 
objComm.Parameters.Append(vPRP_FRETETIPO) 
objComm.Parameters.Append(vPRP_FORMAPAGAMENTO) 
objComm.Parameters.Append(vMENSAGEM_ERRO) 
		
objComm.Execute 
		
PROPOSTA_CODIGO = objComm.Parameters("V_PRP_CODIGO").value
		
set objComm = nothing

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.