3 consultas sobre Funciones

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ú

Responses

Browse pgsql-es-ayuda by date

  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