RE:Problemas al ejecutar Stored Procedure
Este es un fragmento de código:
Dim spReturn As Integer
Dim iReturnParam As New OleDb.OleDbParameter
'Llenar los parámetros de salida
iReturnParam.Direction = ParameterDirection.Output
iReturnParam.DbType = DbType.Int16
iReturnParam.ParameterName = "Return"
'Llenar demás parámetros
lcmd.Parameters.Clear()
With lcmd.Parameters
.Add("IdPaquete", lIdPaquete)
.Add("IdDotacion", lIdDotacion)
.Add("IdUsuario", gIdUsuario)
.Add(iReturnParam) 'Valor de retorno del sp
End With
'Desasignar este desmadre
lcmd.CommandType = CommandType.StoredProcedure
lcmd.CommandText = "sp_paqdot_del"
lcmd.ExecuteNonQuery()
spReturn = lcmd.Parameters("Return").Value() 'Regresar el valor
If spReturn <> 0 Then
MsgBox("No se ha desasignado el registro. Si el paquete ha sido recaudado, este mensaje es correcto!", MsgBoxStyle.Critical, "Error")
Exit Sub
End If
Esta lógica de código la utilizo para otros procesos y no tengo problemas. Destaco también que he corrido ese stored "sp_paqdot_del" desde el Query Analizer con los mismos valores en los parámetros y funciona sin problemas....
=(
Es por esto que me he comenzado a desesperar
El código del SP es el siguiente (las definiciones de los parámetros es correcta!!):
/* FER:
ELIMINAR LA(S) ASIGNACION(ES) DE DOTACIONES A PAQUETE
V 1.0 26-Jul-2005
*/
CREATE PROCEDURE sp_paqdot_del (@IdPaquete INT, @IdDotacion INT = 0,
@Return INT OUTPUT, @IdUsuario INT = NULL) AS
-- SI @IdDotacion = 0 --> SE BORRAN TODAS LAS ASIGNACIONES DE DOTACIONES A ESTE PAQUETE!!
-- ADO Helper
SET NOCOUNT ON
DECLARE @Estado INT
--Comprobar que el estado del Paquete sea EN TRANSITO
SELECT @Estado = Estado FROM tblPaquetes WHERE Id = @IdPaquete
-- Si el paquete ha sido recaudado (Estado = 3), salir
IF @Estado = 3 GOTO ESTADO_INVALIDO
--*-*-*-*-*-*- INICIAR LA TRANSACCION
BEGIN TRANSACTION __VOLARASIGNACION__
---*-*-*-*-*-* PARA CUANDO SE HA ESPECIFICADO UNA ASIGNACION CON IdBoleto
--Devolver el Estado = 1 (disponible) en los Boletos, Dotaciones y Asignación de Taquilla-Taquillero
--y eliminar la asignación
IF @IdDotacion <> 0
BEGIN
UPDATE tblDotaciones SET Estado = 1
WHERE Id = @IdDotacion
DELETE FROM tblDot_Paq WHERE IdDot = @IdDotacion
END
ELSE
BEGIN
UPDATE tblDotaciones SET Estado = 1 --Todas las asignaciones de boletos para el @IdPaquete a la burguer!!
WHERE Id IN (SELECT IdDot FROM tblDot_Paq WHERE IdPaq = @IdPaquete)
DELETE FROM tblDot_Paq WHERE IdPaq = @IdPaquete
END
COMMIT TRANSACTION __VOLARASIGNACION__
IF @@ERROR <> 0
BEGIN
ESTADO_INVALIDO:
SET @Return = 1
RETURN
END
-- Successful
SET NOCOUNT OFF
SET @Return = 0
GO
Gracias Vic x tu ayuda.