Visual Basic.NET - Problemas al ejecutar Stored Procedure

 
Vista:

Problemas al ejecutar Stored Procedure

Publicado por Fer (5 intervenciones) el 29/07/2005 16:57:36


Hola a todos,

He estado trabajando sin problemas con Stored Procedures, para insertar, modificar, eliminar registros, haciendo operaciones con datos y demás. El caso es que de pronto he tenido dificultades para ejecutar algunos de ellos (desde VB.NET), ya que me generan una excepcion no controlada del tipo OleDb.

He revisado que los parámetros coincidan en número y nombre, los tipos de datos, los permisos de ejecución del Stored, que al eliminar registros no se afecten las reglas de FK (efectos en cascada), tambien que la conexión esté activa al momento de ejecutar el método ExecuteNonQuery del objeto Command.

Alguien podría asesorarme para buscar más alternativas que me causen el error que les comento? Me estoy atorando y me estoy empezando a desesperar =(

Salu2 y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas al ejecutar Stored Procedure

Publicado por Victor Collado (95 intervenciones) el 29/07/2005 17:07:13
Hola

Con gusto te hecho una mano pero debo ver un ejemplo de lo que haces, asi que si puedes copia aqui el method que llama a el Stored Procedures, la forma en que recoges los valores, para poder tener mas informacion. Algunas veces ayuda mucho correr la aplicacion en debug mode y copiar los parametros tal como llegan a el method y copiarlos en el Query Analyzer ademas el Stored Procedures y ejecutarlos para ver si no hay ningun error en el Stored Procedures.

Saludos

Victor Collado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas al ejecutar Stored Procedure

Publicado por Fer (5 intervenciones) el 29/07/2005 17:23:18

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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas al ejecutar Stored Procedure

Publicado por Victor Collado (95 intervenciones) el 29/07/2005 17:32:39
Y cual es el error que te da?

Victor Collado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas al ejecutar Stored Procedure

Publicado por Fer (5 intervenciones) el 29/07/2005 17:44:04


Esta:

Excepción no controlada del tipo 'System.Data.OleDb.OleDbException' en system.data.dll

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas al ejecutar Stored Procedure

Publicado por Victor Collado (95 intervenciones) el 29/07/2005 18:09:55
He creado mi propio ejemplo y no tengo error alguno, pero he hecho mi ejemplo con sql no se si es algo de OleDB de todas formas te aconsejo revisar mas los parametros cuando son pasados, puedes debug tu application paso a paso y ver en que momento exacto salta el error.

Victor Collado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas al ejecutar Stored Procedure

Publicado por Fer (5 intervenciones) el 29/07/2005 18:25:25


Bueno, la linea que provoca el error es justo cuando se ejecuta:

lcmd.ExecuteNonQuery()

Y ya que sintacticamente es todo correcto... a que te refieres con esto que escribiste:
"algo de OleDB"

Los permisos?? Ya los revisé y se ejecuta bien si pex!!!
La conexión?? Está abierta y escuchando!


OOps si no voy a optar por ejecutar todos esos querys desde mi aplicación cliente, no desde el SP que era lo que no queria =(

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

Grax Vic
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas al ejecutar Stored Procedure

Publicado por Victor Collado (95 intervenciones) el 29/07/2005 18:47:46
Me referia solamente a que si estas usando SQL Server es mejor usar sqlclient ya que esta mejor elaborado para trabajar con SQL Server pero bueno volviendo a el error me puedes decir cual es el valor de retorno que envias de vuelta cuando ejecutas el stored procedures desde Query Analizer y pasando los mismos valores en los parametros.

Victor Collado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas al ejecutar Stored Procedure

Publicado por Victor Collado (95 intervenciones) el 29/07/2005 18:51:01
Olvide pedirte que si puedes catch the exception es decir poner codigo para coger el error y escribir su description para tener una mejor idea.

Victor Collado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas al ejecutar Stored Procedure

Publicado por Jorge Luis Oviedo (19 intervenciones) el 30/07/2005 19:16:09
ponle un Try Catch
para referenciar mejor la descripcion del error

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar