From: | "Edwin Quijada" <listas_quijada(at)hotmail(dot)com> |
---|---|
To: | cchavez(at)oxyman(dot)com(dot)pe |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | RE: 3 consultas sobre Funciones |
Date: | 2007-05-10 22:24:47 |
Message-ID: | BAY102-F264F577C8EDE711C9D08BBE33A0@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
*-------------------------------------------------------*
*-Edwin Quijada
*-Developer DataBase
*-JQ Microsistemas
*-809-747-2787
* " Si deseas lograr cosas excepcionales debes de hacer cosas fuera de lo
comun"
*-------------------------------------------------------*
>From: "Carlos Chávez Z." <cchavez(at)oxyman(dot)com(dot)pe>
>To: pgsql-es-ayuda(at)postgresql(dot)org
>Subject: [pgsql-es-ayuda] 3 consultas sobre Funciones
>Date: Wed, 09 May 2007 10:50:52 -0500
>
>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?
La misma existe en Postgres
>2. el manejo de la transacción está bien definida en mi función de
>postgres?
No. Dentro de una funcion no se usa debido a que cuando ejecutas una funcion
esta corre por defecto dentro de una transaccion. Es decir , eso esta demas,
quitalo
>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)
>
Si. Declara todo en minusculas. EL problema es que Postgres es sensitivo y
si usas mauyusculas y minusculas ligadas el debe de saber que es. SOlo pon
todo en minuscula y listo o sigue con esa "pela"
>Mas datos uso el EMS PostgreSQL 2.8 y la versión 8.2.3
>
Buena herramienta pero date una pasada por psql para que te hagas un
hombrecito :)
>Gracias de antemano.
>
>
>Carlos Chávez Z.
>Aqp - Perú
>
>---------------------------(fin del mensaje)---------------------------
>TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
>
> http://archives.postgresql.org/pgsql-es-ayuda
_________________________________________________________________
Consigue aquí las mejores y mas recientes ofertas de trabajo EE.UU.
http://latino.msn.com/empleos
From | Date | Subject | |
---|---|---|---|
Next Message | Gabriel Hermes Colina Zambra | 2007-05-10 23:22:58 | RE: 3 consultas sobre Funciones |
Previous Message | Roberto Tortolero | 2007-05-10 21:49:35 | Re: Como convertir los SELECT que usan AS en otros manejadores a Postrgres |