Try-Catch

02/09/2008 - 04:30 por Pablo F.Savino | Informe spam
hola todos,

en un procedimiento almacenado donde estoy utilizando begin try , end try ,
begin catch y end catch ..pero en el final del procedimiento y fuera del
begin catch tengo un selec a una variables (select @mivariable) y sql2005
nunca me devuelve ese select, si lo pongo dentro del begin try o por fuera
tampoco me devuelve el select, sera que los select dentro de un try o dentro
de un procedimiento con try catch no funcionan?

agradeceria me digan porque no unciona el select.


saludos

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
02/09/2008 - 16:36 | Informe spam
Pablo,

Dificil de hacer, si no podemos ver el codigo de ese procedimiento.


AMB


"Pablo F.Savino" wrote:

hola todos,

en un procedimiento almacenado donde estoy utilizando begin try , end try ,
begin catch y end catch ..pero en el final del procedimiento y fuera del
begin catch tengo un selec a una variables (select @mivariable) y sql2005
nunca me devuelve ese select, si lo pongo dentro del begin try o por fuera
tampoco me devuelve el select, sera que los select dentro de un try o dentro
de un procedimiento con try catch no funcionan?

agradeceria me digan porque no unciona el select.


saludos



Respuesta Responder a este mensaje
#2 Rubén Garrigós
02/09/2008 - 17:57 | Informe spam
Hola Pablo,

Como bien decía Alejandro, complicado tenemos poderte ayudar si no nos
muestras el código que te da el error. El escenario que comentas no debería
fallarte si no lo hemos entendido mal. Por ejemplo este par de procedimientos
devuelven el valor de una variable fuera del bloque try-catch y funciona
perfectamente tanto en caso de haber una execpción como en caso de no
haberla...


CREATE PROCEDURE test
AS
BEGIN
DECLARE @i INT
BEGIN TRY
SET @i=1
END TRY
BEGIN CATCH
SET @i=2
END CATCH
SELECT @i
END
GO
CREATE PROCEDURE test2
AS
BEGIN
DECLARE @i INT
BEGIN TRY
SET @i=1/0
END TRY
BEGIN CATCH
SET @i=2
END CATCH
SELECT @i
END
GO
EXEC test
GO
EXEC test2

Rubén Garrigós
Solid Quality Mentors


"Pablo F.Savino" wrote:

hola todos,

en un procedimiento almacenado donde estoy utilizando begin try , end try ,
begin catch y end catch ..pero en el final del procedimiento y fuera del
begin catch tengo un selec a una variables (select @mivariable) y sql2005
nunca me devuelve ese select, si lo pongo dentro del begin try o por fuera
tampoco me devuelve el select, sera que los select dentro de un try o dentro
de un procedimiento con try catch no funcionan?

agradeceria me digan porque no unciona el select.


saludos



Respuesta Responder a este mensaje
#3 Pablo F. Savino
02/09/2008 - 23:49 | Informe spam
gracias por contestar, aqui dejo el procedimiento, cave señalar que no da
ningun error, todo lo hace bien solo que el SELECT @NUMERO_DE_PEDIDO nunca
me decuelve el numero de pedido


CREATE PROC STP_CONFIRMA_PEDIDO
(
@IDEMPRESA INT,
@IDCLIENTE INT,
@IP VARCHAR(50)
)
AS
BEGIN


DECLARE
@NUMERO_DE_PEDIDO INT

BEGIN TRY

BEGIN TRAN

SELECT @NUMERO_DE_PEDIDO=CONTADOR FROM SIS_NUMERO_DE_PEDIDO WHERE
IDEMPRESA=@IDEMPRESA

UPDATE SIS_NUMERO_DE_PEDIDO SET CONTADOR=CONTADOR+1 WHERE
IDEMPRESA=@IDEMPRESA


INSERT INTO DAT_ARTICULOS_VENDIDOS
SELECT
dbo.DAT_ARTICULOS.ID_ARTICULO, dbo.DAT_ARTICULOS.ID_EMPRESA,
dbo.TMP_CARRITO.IDCLIENTE, dbo.DAT_ARTICULOS.CODIGO_ARTICULO,
dbo.DAT_ARTICULOS.DESCRIPCION, dbo.TMP_CARRITO.CANTIDAD,
dbo.TMP_CARRITO.PRECIO, dbo.DAT_ARTICULOS.CREO,
dbo.DAT_ARTICULOS.MODIFICO, GETDATE() AS FECHA_VENTA
FROM
dbo.DAT_ARTICULOS
INNER JOIN
dbo.TMP_CARRITO ON dbo.DAT_ARTICULOS.ID_EMPRESA = dbo.TMP_CARRITO.IDEMPRESA
AND
dbo.DAT_ARTICULOS.ID_ARTICULO = dbo.TMP_CARRITO.IDARTICULO
WHERE
dbo.TMP_CARRITO.IDCLIENTE=@IDCLIENTE
AND
dbo.TMP_CARRITO.IPCLIENTE=@IP
AND
dbo.TMP_CARRITO.IDEMPRESA=@IDEMPRESA


INSERT INTO DAT_CONTROL_DE_PEDIDOS
SELECT
@NUMERO_DE_PEDIDO,dbo.DAT_ARTICULOS.ID_EMPRESA,dbo.TMP_CARRITO.IDCLIENTE,dbo.DAT_ARTICULOS.ID_ARTICULO,dbo.TMP_CARRITO.CANTIDAD,
0,GETDATE(),0,0
FROM
dbo.DAT_ARTICULOS
INNER JOIN
dbo.TMP_CARRITO ON dbo.DAT_ARTICULOS.ID_EMPRESA = dbo.TMP_CARRITO.IDEMPRESA
AND
dbo.DAT_ARTICULOS.ID_ARTICULO = dbo.TMP_CARRITO.IDARTICULO
WHERE
dbo.TMP_CARRITO.IDCLIENTE=@IDCLIENTE
AND
dbo.TMP_CARRITO.IPCLIENTE=@IP
AND
dbo.TMP_CARRITO.IDEMPRESA=@IDEMPRESA

/*
DELETE TMP_CARRITO
WHERE
dbo.TMP_CARRITO.IDCLIENTE=@IDCLIENTE
AND
dbo.TMP_CARRITO.IPCLIENTE=@IP
AND
dbo.TMP_CARRITO.IDEMPRESA=@IDEMPRESA */

COMMIT TRAN

END TRY
BEGIN CATCH

ROLLBACK TRAN

END CATCH


SELECT @NUMERO_DE_PEDIDO <<<<<<<<<<<<< NO FUNCIONA LO PONGA DONDE LO PONGA

END


Saludos y gracias por la colaboracion.






"Pablo F.Savino" escribió en el mensaje
news:u%
hola todos,

en un procedimiento almacenado donde estoy utilizando begin try , end try
, begin catch y end catch ..pero en el final del procedimiento y fuera del
begin catch tengo un selec a una variables (select @mivariable) y sql2005
nunca me devuelve ese select, si lo pongo dentro del begin try o por fuera
tampoco me devuelve el select, sera que los select dentro de un try o
dentro de un procedimiento con try catch no funcionan?

agradeceria me digan porque no unciona el select.


saludos


Respuesta Responder a este mensaje
#4 Pablo F. Savino
02/09/2008 - 23:55 | Informe spam
ESTIMADOS AMIGOS!!!, sepan disculpar , pero el error estaba en el codigo PHP
(uso php+mssql2005) todo en el procedimiento anda perfecto.

nuevamente, disculpen las molestias, pero tantas horas detras del monitor me
dejo medio ciego y no veia el error.

muchas gracias por la ayuda y disculpen!

saludos cordiales!



"Pablo F.Savino" escribió en el mensaje
news:u%
hola todos,

en un procedimiento almacenado donde estoy utilizando begin try , end try
, begin catch y end catch ..pero en el final del procedimiento y fuera del
begin catch tengo un selec a una variables (select @mivariable) y sql2005
nunca me devuelve ese select, si lo pongo dentro del begin try o por fuera
tampoco me devuelve el select, sera que los select dentro de un try o
dentro de un procedimiento con try catch no funcionan?

agradeceria me digan porque no unciona el select.


saludos


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida