From: | "Carlos Chávez Z(dot)" <cchavez(at)oxyman(dot)com(dot)pe> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | 3 consultas sobre Funciones |
Date: | 2007-05-09 15:50:52 |
Message-ID: | 4641EDDC.3020607@oxyman.com.pe |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola a todos, para empezar debo aclarar que soy novato en Postgres por
lo cual disculpen si pregunto cosas triviales pero la verdad le estoy
dando vueltas al asunto y no le doy a la respuesta.
Bueno el asunto es el siguiente: He creado una función sencilla para
probar el manejo de transacciones que normalmente lo haria de la
siguiente manera en MS-SQL
create procedure GrabaTipoTrab
@descrip varchar(20);
(dot)(dot)(dot)(at)nuevo_codigo tinyint OUTPUT;
Begin transaction
declare regs as tinyint
Select @nuevo_codigo=isnull(max(codigo)+1,1) from TipoTrabajadores
Insert Into TipoTrabajadores values (@nuevo_codigo, @descrip)
set @regs = @@rowcount
if @regs<0
rollback
else
commit transaction
endif
return @regs
en Postgres he tratado de recrear la misma funcion de la siguiente manera...
CREATE OR REPLACE FUNCTION "RRHH"."fncGrabaTipoTrab" (varchar) RETURNS
boolean AS
$body$
DECLARE
descri ALIAS FOR $1;
codigo "RRHH"."TipoTrabajador"."ttrCodigo"%TYPE;
BEGIN
SELECT INTO codigo MAX("ttrCodigo") FROM "RRHH"."TipoTrabajador";
IF codigo IS NOT NULL THEN
codigo := codigo + 1;
ELSE
codigo := 1;
END IF;
INSERT INTO "RRHH"."TipoTrabajador" VALUES (codigo,descri);
IF NOT FOUND THEN
RAISE EXCEPTION 'no pasa nada...';
RETURN FALSE;
ELSE
RETURN TRUE;
END IF;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
Las dudas son las siguientes:
1. Hay alguna función que reemplace al isnull de sqlserver?
2. el manejo de la transacción está bien definida en mi función de postgres?
3. hay forma de evitar poner las comillas dobles en los nombres de las
tablas, esquemas, etc. (en los ejemplos que he visto no las usan pero
cuando edito mis funciones no me acepta si no es como comillas)
Mas datos uso el EMS PostgreSQL 2.8 y la versión 8.2.3
Gracias de antemano.
Carlos Chávez Z.
Aqp - Perú
From | Date | Subject | |
---|---|---|---|
Next Message | Junior - GMail | 2007-05-09 15:51:27 | En Linux, Mi Disco duro se daño y solo pude rescatar /usr/local/pgsql/data |
Previous Message | Miguel Ortega | 2007-05-09 15:44:58 | Re: Float8 Vs Numeric |