Mensajes en Stores Procedures

04/10/2006 - 18:19 por Lazarte Federico | Informe spam
Estimados.
Tengo el siguiente stored que tiene como funcion eliminar un registro
de una tabla con relaciones. En el mismo utilizo mensajes para analizar
el estado de la operación.
Ahora bien, lo que me traba es como recuperar estos mensajes desde
codigo en mi aplicacion ASP.NET y C#.
El stored es el siguiente y el que pueda ayudarme le estare agradecido.

ALTER PROCEDURE [dbo].[pa_DelEmpresa]
@EMP_Rut numeric(9,0)
AS
IF NOT EXISTS ( SELECT EMP_Rut
FROM SITIO
WHERE EMP_Rut = @EMP_Rut
)
BEGIN
IF NOT EXISTS ( SELECT EMP_Rut
FROM USUARIO
WHERE EMP_Rut = @EMP_Rut
)
BEGIN

DELETE EMPRESA
WHERE EMP_Rut = @EMP_Rut
SELECT 'OK' AS Respuesta
END
ELSE
BEGIN
SELECT 'No puede Eliminar la Empresa porque tiene Usuarios
asociados' AS Respuesta
END
END
ELSE
BEGIN
SELECT 'No puede Eliminar la Empresa porque tiene Sitios asociados'
AS Respuesta
END

Preguntas similare

Leer las respuestas

#1 Maxi
04/10/2006 - 19:30 | Informe spam
Hola, te recomiendo que lo consultes en el foro de programacion


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Lazarte Federico" escribió en el mensaje
news:
Estimados.
Tengo el siguiente stored que tiene como funcion eliminar un registro
de una tabla con relaciones. En el mismo utilizo mensajes para analizar
el estado de la operación.
Ahora bien, lo que me traba es como recuperar estos mensajes desde
codigo en mi aplicacion ASP.NET y C#.
El stored es el siguiente y el que pueda ayudarme le estare agradecido.

ALTER PROCEDURE [dbo].[pa_DelEmpresa]
@EMP_Rut numeric(9,0)
AS
IF NOT EXISTS ( SELECT EMP_Rut
FROM SITIO
WHERE EMP_Rut = @EMP_Rut
)
BEGIN
IF NOT EXISTS ( SELECT EMP_Rut
FROM USUARIO
WHERE EMP_Rut = @EMP_Rut
)
BEGIN

DELETE EMPRESA
WHERE EMP_Rut = @EMP_Rut
SELECT 'OK' AS Respuesta
END
ELSE
BEGIN
SELECT 'No puede Eliminar la Empresa porque tiene Usuarios
asociados' AS Respuesta
END
END
ELSE
BEGIN
SELECT 'No puede Eliminar la Empresa porque tiene Sitios asociados'
AS Respuesta
END
Respuesta Responder a este mensaje
#2 Alejandro Mesa
04/10/2006 - 22:25 | Informe spam
Lazarte Federico,

Al parecer este sp retornara multiples recordsets debido a que no usas el
setting "SET NOCOUNT ON" al principio de tu codigo, por lo que cuando
elimines una fila, te llegara un recordset indicando cuantas filas fueron
afectadas y otro recordset con el mensaje. Otra cosa, la manera de enviar
este tipo de mensajes hacia la aplicacion cliente se hace mediante el uso de
RAISERROR, para que el mensaje vaya a la colleccion de errores de la
conexion. Puedes usar una severidad baja para que tu aplicacion tome el
mensaje como advertencia.

Para el caso en que el sp retorne los mensajes "No puede eliminar ...", el
sp solo retornara un recordset, pero para el mensaje "OK", el sp retornara
dos recordsets el uno indicando las filas afectadas y el otro con el mensaje.
Como no nos muestras el codigo C# que usas, te refiero a la clase
sqldatareader, el metodo NextResult.


AMB

"Lazarte Federico" wrote:

Estimados.
Tengo el siguiente stored que tiene como funcion eliminar un registro
de una tabla con relaciones. En el mismo utilizo mensajes para analizar
el estado de la operación.
Ahora bien, lo que me traba es como recuperar estos mensajes desde
codigo en mi aplicacion ASP.NET y C#.
El stored es el siguiente y el que pueda ayudarme le estare agradecido.

ALTER PROCEDURE [dbo].[pa_DelEmpresa]
@EMP_Rut numeric(9,0)
AS
IF NOT EXISTS ( SELECT EMP_Rut
FROM SITIO
WHERE EMP_Rut = @EMP_Rut
)
BEGIN
IF NOT EXISTS ( SELECT EMP_Rut
FROM USUARIO
WHERE EMP_Rut = @EMP_Rut
)
BEGIN

DELETE EMPRESA
WHERE EMP_Rut = @EMP_Rut
SELECT 'OK' AS Respuesta
END
ELSE
BEGIN
SELECT 'No puede Eliminar la Empresa porque tiene Usuarios
asociados' AS Respuesta
END
END
ELSE
BEGIN
SELECT 'No puede Eliminar la Empresa porque tiene Sitios asociados'
AS Respuesta
END


Respuesta Responder a este mensaje
#3 Gustavo Larriera \(MVP\)
04/10/2006 - 23:16 | Informe spam
En mi opinión personal esa forma de programación no es demasiado elegante.

Evalúa usar RAISERROR como forma de generar mensajes desde los
procedimientos.

Gustavo Larriera, MVP
Solid Quality Mentors
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Blog: http://solidqualitylearning.com/blogs/glarriera/


"Lazarte Federico" wrote in message
news:
Estimados.
Tengo el siguiente stored que tiene como funcion eliminar un registro
de una tabla con relaciones. En el mismo utilizo mensajes para analizar
el estado de la operación.
Ahora bien, lo que me traba es como recuperar estos mensajes desde
codigo en mi aplicacion ASP.NET y C#.
El stored es el siguiente y el que pueda ayudarme le estare agradecido.

ALTER PROCEDURE [dbo].[pa_DelEmpresa]
@EMP_Rut numeric(9,0)
AS
IF NOT EXISTS ( SELECT EMP_Rut
FROM SITIO
WHERE EMP_Rut = @EMP_Rut
)
BEGIN
IF NOT EXISTS ( SELECT EMP_Rut
FROM USUARIO
WHERE EMP_Rut = @EMP_Rut
)
BEGIN

DELETE EMPRESA
WHERE EMP_Rut = @EMP_Rut
SELECT 'OK' AS Respuesta
END
ELSE
BEGIN
SELECT 'No puede Eliminar la Empresa porque tiene Usuarios
asociados' AS Respuesta
END
END
ELSE
BEGIN
SELECT 'No puede Eliminar la Empresa porque tiene Sitios asociados'
AS Respuesta
END
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida