Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Validar si inserto un registro en procedimiento

Estas en el tema de Validar si inserto un registro en procedimiento en el foro de PostgreSQL en Foros del Web. Cordial saludo. En estos momentos estan trabajando con la version 9 y crearon 3 schemas como son: general, procesos, seguridad y el default(public); cuando creo ...
  #1 (permalink)  
Antiguo 25/05/2011, 12:09
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Pregunta Validar si inserto un registro en procedimiento

Cordial saludo.

En estos momentos estan trabajando con la version 9 y crearon 3 schemas como son: general, procesos, seguridad y el default(public); cuando creo el procedimiento almacenado siempre lo envia al schema public y debe quedar en general; como lo hago???

y segundo: el procedimiento almacenado inserta un registro pero debo validar si realmente guardo ese registro o hubo algún error y retornar ese mensaje de error; como hago eso???

Agradezco la ayuda que me puedan brindar
  #2 (permalink)  
Antiguo 25/05/2011, 12:44
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Validar si inserto un registro en procedimiento

Cita:
En estos momentos estan trabajando con la version 9 y crearon 3 schemas como son: general, procesos, seguridad y el default(public); cuando creo el procedimiento almacenado siempre lo envia al schema public y debe quedar en general; como lo hago???
Al momento de crear el procedure, le antepones el nombre del esquema y lo separas con punto.
CREATE OR REPLACE FUNCTION general.nombre_procedimiento


Cita:
y segundo: el procedimiento almacenado inserta un registro pero debo validar si realmente guardo ese registro o hubo algún error y retornar ese mensaje de error; como hago eso???
Mira el tema de excepciones.
http://www.postgresql.org/docs/9.0/s...tructures.html
Especificamente el apartado 39.6.5. Trapping Errors


saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 25/05/2011, 14:58
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Pregunta Respuesta: Validar si inserto un registro en procedimiento

Cordial saludo huesos52


Efectivamente funciono con CREATE OR REPLACE FUNCTION general.sp_unidadMedidaPERO al momento de llamar la funcion con

select "sp_unidadMedida"(5, 'a', 'daada') me aparece el siguiente mensaje:

ERROR: no existe la función sp_unidadMedida(integer, unknown, unknown)
LINE 1: select "sp_unidadMedida"(5, 'a', 'daada')

si le quito las comillas dobles sigue el mismo mensaje; intente ponerle general.sp_unidadMedida"(5, 'a', 'daada') y nada con o sin comillas dobles sale igual...

que otra cosa puede ser....

con respecto al segundo punto que plantee y estuve revisando y por los pocos ejemplos que veo solo aplica al momento de hacer select no insert, update, delete....

Agradezco la ayuda y sugerencias que me puedan brindar.
  #4 (permalink)  
Antiguo 25/05/2011, 15:16
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Validar si inserto un registro en procedimiento

Con respecto a lo primero.

llamalo sin comillas
SELECT general.sp_unidadMedida(campos)
O en su defecto, poniendo comillas a ambos
SELECT "general"."sp_unidadMedida"(campos)

Con lo segundo.... aplica para cualquier operación DML. Si hay un error, el bloque pasa a la exception.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 25/05/2011, 16:49
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Pregunta Respuesta: Validar si inserto un registro en procedimiento

Cordial saludo huesos52.

gracias por tu rapida respuesta...

pero no me funciona la llamada de la funcion me sale el siguiente mensaje:

ERROR: no existe la función general.sp_unidadmedida(integer, unknown, unknown)
LINE 1: select general.sp_unidadmedida(1,'Kg','Kilogramo');
^
HINT: Ninguna función coincide en el nombre y tipos de argumentos. Puede desear agregar conversión explícita de tipos.


que otra cosa puede ser??

agradezco de antemano la ayuda y sugerencias que me puedan brindar...
  #6 (permalink)  
Antiguo 26/05/2011, 06:59
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Validar si inserto un registro en procedimiento

Postea todo el procedimiento.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 26/05/2011, 09:00
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Pregunta Respuesta: Validar si inserto un registro en procedimiento

Cordial saludo huesos52 este es el procedimiento:

Cita:
CREATE OR REPLACE FUNCTION general.sp_unidadmedida(codigounimed smallint, nombreunimed character varying, descripcionunimed character varying, estadounimed character)
RETURNS character varying AS
$BODY$
DECLARE
mensaje character varying(100);
BEGIN
BEGIN
insert into sp_unidadMedida(codigo,nombre,descripcion,estado) values(codigounimed,nombreunimed,descripcionunimed ,estadounimed);
mensaje = 'Registro guardado con éxito';
EXCEPTION
WHEN unique_violation THEN
mensaje = 'No puede duplicar el registro';
WHEN OTHERS THEN
mensaje = 'Debe revisar los datos que esta enviando a guardar';
-- do nothing, and loop to try the UPDATE again
END;
RETURN mensaje;
END;
$BODY$
LANGUAGE plpgsql VOLATILE

y lo llamo asi:

select general.sp_unidadmedida(1, 'dadaad', 'dadada', 'A')


pero sale el mensaje de error que especifique antes.

Agradezco la ayuda y sugerencias que me puedas brindar.
  #8 (permalink)  
Antiguo 26/05/2011, 09:41
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Validar si inserto un registro en procedimiento

llamalo así:
Código SQL:
Ver original
  1. SELECT general.sp_unidadmedida('1'::SMALLINT, 'dadaad'::CHARACTER VARYING, 'dadada'::CHARACTER VARYING, 'A'::CHARACTER)

lo que hace es forzar la conversión al tipo de datos con los que fue declarado

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 26/05/2011, 18:14
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Pregunta Respuesta: Validar si inserto un registro en procedimiento

Cordial saludo huesos52.

intente como me escribiste pero en el procedimiento el va a la excepcion porque me retorna el mensaje "Debe revisar los datos que esta enviando a guardar"

Que otra cosa puede ser???

agradezco la ayuda que me estas brindando.
  #10 (permalink)  
Antiguo 26/05/2011, 20:40
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Validar si inserto un registro en procedimiento

haz de igual forma el casteo del los campos dentro del procedure

Código SQL:
Ver original
  1. INSERT INTO sp_unidadMedida(codigo,nombre,descripcion,estado) VALUES(codigounimed::SMALLINT,nombreunimed::CHARACTER VARYING,descripcionunimed::CHARACTER VARYING,estadounimed::CHARACTER);
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #11 (permalink)  
Antiguo 26/05/2011, 21:37
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
De acuerdo Respuesta: Validar si inserto un registro en procedimiento

Cordial saludo huesos52.

efectivamente era eso; adicional la tabla debia ir en "" osea general."unidadMedida"

te agradezco inmensamente que me colaboraras y sacaras tiempo para solucionar esto.

como profesional utilizas esquemas separadas como comente o trabajas en una sola esquema??
  #12 (permalink)  
Antiguo 27/05/2011, 05:32
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Validar si inserto un registro en procedimiento

Cita:
como profesional utilizas esquemas separadas como comente o trabajas en una sola esquema??
Si utilizo esquemas. Le da mucho orden a proyectos de un tamaño razonable.

saludos y me alegra que te haya funcionado.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: procedimiento, registro
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:05.