convertir plpgsql en sql

From: emillio alvarez <dr7tbien(at)terra(dot)es>
To: postgresql - lista de correo - <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: convertir plpgsql en sql
Date: 2004-12-19 19:48:08
Message-ID: 41C5DAF8.4060409@terra.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Resuta que tengo hecha una base de datos, me he hecho las funciones, con
la ayuda de este foro y lo que he leido he hecho las funciones en
plpgsql. como esto lo hacia en local, ha llegado la hora de meter mi
base de datos en el sever. Y ocurre en que dicho servidor es posible
alojar funcionas, peor no en plpgsql, en sql, y c si que es posible,
tambien en lenguaje interno(que no sé que es).
Es de destacar que las funciones y triggers que pongo a continuación
funcionan de maravilla con el lenguaje plpgsql. Ahora tengo estas
funciones asociadas a un TRIGGER:

CREATE OR REPLACE FUNCTION actualizar_fecha() RETURNS TRIGGER AS '
BEGIN
NEW.fecha_acceso := CAST(DATE_PART(''epoch'', CURRENT_TIMESTAMP)
AS INTEGER);
RETURN NEW;
END;
' LANGUAGE 'plpgsql';

CREATE OR REPLACE FUNCTION eliminar_ocurrencia() RETURNS TRIGGER AS '
BEGIN
DELETE FROM ocurrencias_clave WHERE tabla=TG_RELNAME AND
id_entrada_tabla=OLD.id;
RETURN OLD;
END;
' LANGUAGE 'plpgsql';
---------------------------------------------------------------
--El siguiente trigger y la siguiente función permite incrementar
n_veces con una sentencia similar a esta:
--update secciones visitadas set id_visitantes =id_visitantes;
---------------------------------------------------------------
CREATE FUNCTION actualizar_n_veces() RETURNS TRIGGER AS '
BEGIN
NEW.n_veces := NEW.n_veces+1;
RETURN NEW;
END;
' LANGUAGE 'plpgsql';

Y algunos de los triggers relacionados con estas funciones son:

CREATE TRIGGER trigger_n_veces BEFORE UPDATE ON
visitantes_secciones_visitadas
FOR EACH ROW
EXECUTE PROCEDURE actualizar_n_veces();

CREATE TRIGGER trigger_borrado_ocurrencias_clave BEFORE DELETE ON articulos
FOR EACH ROW
EXECUTE PROCEDURE eliminar_ocurrencia();

CREATE TRIGGER trigger_fecha BEFORE UPDATE ON articulos
FOR EACH ROW
EXECUTE PROCEDURE actualizar_fecha();

NI que decir tiene que esto no funciona en el lenguaje sql. POr ejemplo,
la función actualizar_fecha() (Una funcion que actualiza el campo fecha,
cada vez que se hace un update o insert) me responde que SQL no admite
un TRIGGER como devolucion. Y claro si no puedo crear las funciones, no
puedo crear los triggers.

Otor problema que tengo es por ejemlpo en la siguiente función:

CREATE FUNCTION get_seccion(INTEGER) RETURNS VARCHAR(20) AS '
DECLARE
seccion ALIAS FOR $1;
secciones_rec RECORD;
BEGIN
IF seccion IS NULL THEN
RETURN '''';
ELSE
SELECT INTO secciones_rec * FROM secciones WHERE id=seccion;
return secciones_rec.nombre_es ||''/'' ||
secciones_rec.nombre_en;
END IF;

END;
' LANGUAGE 'plpgsql';

Donde no me reconoce el ALIAS si la pongo como funcion sql, y supongo
que alguna cosa mas.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Magnos 2004-12-20 15:06:35 Re: Postgres & MSSQL
Previous Message Alvaro Herrera 2004-12-19 17:20:31 Re: convertir plpgsql en sql