Foros del Web » Programando para Internet » ASP Clásico »

El error "El procedimiento 'sp_i_idioma' precisa el parámetro '@error'

Estas en el tema de El error "El procedimiento 'sp_i_idioma' precisa el parámetro '@error' en el foro de ASP Clásico en Foros del Web. Hola nuevamente tengo este problema Código: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC SQL Server Driver][SQL Server]El procedimiento 'sp_i_idioma' precisa el parámetro '@error', ...
  #1 (permalink)  
Antiguo 05/07/2007, 14:22
Avatar de karmish  
Fecha de Ingreso: mayo-2006
Mensajes: 272
Antigüedad: 18 años
Puntos: 1
El error "El procedimiento 'sp_i_idioma' precisa el parámetro '@error'

Hola nuevamente tengo este problema
Código:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]El procedimiento
'sp_i_idioma' precisa el parámetro '@error', que no se ha especificado.
Cundo desde mi formulario envio al procedimeinto un
nombre que ya existe, pasa lo anterio.

En el procedimeinto almacenado la cosa esta asi:

Código:
SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

ALTER     PROCEDURE sp_i_idioma (@des_idioma varchar (20), @est_activo char(1), @error int output)
AS BEGIN

if rtrim( ltrim(@des_idioma)) = '' 
begin
   RAISERROR 666666 'ingreso vacio'
   commit transaction
   Return 0
end 

declare @maximo numeric(10)
Select  @maximo = isnull(max(id_idioma),0)+ 1 from idioma

insert into idioma (id_idioma, des_idioma, est_activo ) 
Values (@maximo, @des_idioma, @est_activo  ) 

SELECT @error = @@error

Return 0
END
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
Perdonen si no es claro pero los procedimientos lamacenados
no los ago yo. Otra cosa que hicieron fue:

Código:
declare @err int
select @err  = 999
execute sp_i_idioma 'INGLEST','A', @err output
select @err
y la forma en que le paso la informacion al procedimeinto almacenado es:

Código:
SET DbObj = Server.CreateObject("ADODB.Connection")
DbObj.Open Application("curriculum")
Set oCom = CreateObject("ADODB.Command")
Set oRec = CreateObject("ADODB.Recordset")

valor = Request.Form("checkbox")
nom = Request.Form("textfield22")

if valor = "checkbox" then
	valor = "A"
	else
	valor = "B"
	end if

oCom.CommandText= "execute sp_i_idioma '"&nom&"','"&valor&"'"
oCom.ActiveConnection = DbObj
Set oRec = oCom.Execute
Espero que me entiendad, muchas gracias de antemano.
  #2 (permalink)  
Antiguo 05/07/2007, 15:07
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: El error "El procedimiento 'sp_i_idioma' precisa el parámetro '@error'

tengo duda en esta seccion
ALTER PROCEDURE sp_i_idioma (@des_idioma varchar (20), @est_activo char(1), @error int output)

imagino que es un valor de salida si en dado caso tuviste error en el procedure, no es asi???
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #3 (permalink)  
Antiguo 05/07/2007, 15:21
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: El error "El procedimiento 'sp_i_idioma' precisa el parámetro '@error'

Necesitas crear el parámetro de salida, como ya lo indica el caballero del zodiaco:

Código:
Set param = oCom.CreateParameter("nombre_parametro", *adInteger, adParamOutput, *4)
oCom.Parameters.Append(param)

oCom.Execute
variable = oCom.Parameters("nombre_parametro")
Salud

*Tipo y tamaño variable
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 05/07/2007, 15:26
Avatar de karmish  
Fecha de Ingreso: mayo-2006
Mensajes: 272
Antigüedad: 18 años
Puntos: 1
Re: El error "El procedimiento 'sp_i_idioma' precisa el parámetro '@error'

Estimado maestro de Libra, respondiendo a tu pregunta, es exactamento eso en caso que tuvise un error en el procedure se da un valor de salida.
  #5 (permalink)  
Antiguo 05/07/2007, 15:29
Avatar de karmish  
Fecha de Ingreso: mayo-2006
Mensajes: 272
Antigüedad: 18 años
Puntos: 1
Re: El error "El procedimiento 'sp_i_idioma' precisa el parámetro '@error'

Cita:
Iniciado por u_goldman Ver Mensaje
Necesitas crear el parámetro de salida, como ya lo indica el caballero del zodiaco:

Código:
Set param = oCom.CreateParameter("nombre_parametro", *adInteger, adParamOutput, *4)
oCom.Parameters.Append(param)

oCom.Execute
variable = oCom.Parameters("nombre_parametro")
Esto tendria que ir despues de
Código:
Set oRec = oCom.Execute
o antes???

Código:
oCom.CommandText= "execute sp_i_idioma '"&nom&"','"&valor&"'"
oCom.ActiveConnection = DbObj
Set oRec = oCom.Execute
  #6 (permalink)  
Antiguo 05/07/2007, 15:42
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: El error "El procedimiento 'sp_i_idioma' precisa el parámetro '@error'

Ya vi...yo te recomiendo que si ya estás utilizando el objeto command, crees tus parámetros, para que no te confundas con las instrucciones

Código:
Set param = oCom.CreateParameter("nombre_parametro_1", *adInteger, adParamInput, *4, valor)
oCom.Parameters.Append(param)
Set param = oCom.CreateParameter("nombre_parametro_2", *adInteger, adParamInput, *4, valor)
oCom.Parameters.Append(param)
Y después solo lo tienes que ejecutar:

oCmd.Execute

Ahora, realmente no te debe regresar un recordset, lo que te regresa es el error en caso de haber uno asi que no necesitas tener un Set rs = con solo ejecutar el Command y capturar el valor del parámetro de salida es suficiente.


Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 05/07/2007, 15:59
Avatar de karmish  
Fecha de Ingreso: mayo-2006
Mensajes: 272
Antigüedad: 18 años
Puntos: 1
Re: El error "El procedimiento 'sp_i_idioma' precisa el parámetro '@error'

Perdona que sea un poco testarudo, pero, exactamente eso quiero lograr capturar el parametro.
La forma que me muestra se logra hacer eso???
  #8 (permalink)  
Antiguo 05/07/2007, 16:06
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: El error "El procedimiento 'sp_i_idioma' precisa el parámetro '@error'

Si, está indicado en el post número 3 de este hilo, crea los 3 parámetros como ya te lo mostré e invoca el método Execute del objeto oComm, después capturas el valor de este parámetro como se muestra:

Código:
'Salida
Set param = oCom.CreateParameter("nombre_parametro", *adInteger, adParamOutput, *4)
oCom.Parameters.Append(param)
'Dos de entrada
Set param = oCom.CreateParameter("nombre_parametro_1", *adInteger, adParamInput, *4, valor)
oCom.Parameters.Append(param)
Set param = oCom.CreateParameter("nombre_parametro_2", *adInteger, adParamInput, *4, valor)
oCom.Parameters.Append(param)

oCom.Execute
'Aqui recuperas el valor del error
variable = oCom.Parameters("nombre_parametro")
Fijate en los tipos de dato y su tamaño.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 06/07/2007, 07:32
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: El error "El procedimiento 'sp_i_idioma' precisa el parámetro '@error'

Que esto no lo habiamos visto ya en otro post?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:20.