Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group