PostgreSQL - Comprobar si una instruccion da error

 
Vista:
sin imagen de perfil

Comprobar si una instruccion da error

Publicado por Alberto Alejandro (1 intervención) el 24/11/2015 14:22:09
Hola gente, tengo una duda .

Estoy tratando de pasar unos store procedures de SQL Server a PostgresSQL , me pregunta se basa en lo siguente:


En una parte de la funcion tengo que validar si una instrucción da error al ejecutarse, esto se realiza de la siguiente manera en SQL Server :

1
2
3
4
5
6
7
8
9
update tblsit_trans_solic with (rowlock)
 set fe_fin = getdate(), id_status = 8, id_det_status = 9, tx_obs = @obs
 where id_solic = @id_solic
 and fe_fin is null
 
 if(@@error=0) //  con este if es como valido si la instrucción de arriba da error .
 begin
  update tblsit_solic with (rowlock)
  set in_status = -1 where id_solic = @id_solic

Quisiera saber como puedo hacer esa validacion en postgres, es decir , el equivalente de @@error en postgres

Otra cosa es el
1
with  ( rowlock )
, cual es su equivalente en postgres .


Bueno esas son mis dudas, espero que me ayuden.

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
sin imagen de perfil
Val: 14
Ha aumentado 1 puesto en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

Comprobar si una instruccion da error

Publicado por Rafael (21 intervenciones) el 01/12/2015 09:20:09
Hola:

En Postgresql la estructura para atrapar errores es:
1
2
3
4
5
6
7
8
9
10
11
12
[ <<label>> ]
[ DECLARE
    declarations ]
BEGIN
    statements
EXCEPTION
    WHEN condition [ OR condition ... ] THEN
        handler_statements
    [ WHEN condition [ OR condition ... ] THEN
          handler_statements
      ... ]
END;

Ejemplo:
1
2
3
4
5
6
7
8
9
10
INSERT INTO mytab(firstname, lastname) VALUES('Tom', 'Jones');
BEGIN
    UPDATE mytab SET firstname = 'Joe' WHERE lastname = 'Jones';
    x := x + 1;
    y := x / 0;
EXCEPTION
    WHEN division_by_zero THEN
        RAISE NOTICE 'caught division_by_zero';
        RETURN x;
END;


Para el caso del RowLock
Necesitas leer un rato acerca de como Postgresql realiza los bloqueos te dejo la pagina que puede resolver tus dudas
http://www.postgresql.org/docs/9.1/static/explicit-locking.html

Saludos y que te sirva...

Pd. Si te sirve la info a mi me sirve un +1.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar