[pgsql-ayuda] sobre procedimientos almacenados

Ing. Roberto Andrade Fonseca randrade@abl.com.mx
Wed, 25 Apr 2001 13:08:56 -0500 (CDT)


On Wed, 25 Apr 2001, Miguel Ovando wrote:

> Gracias Roberto muy agradecido por tu ayuda.
> Otra preguntita.
> >     id_puesto   int REFERENCES puesto,
>  REFERENCES quiere decir que este campo es llave
> foranea??
> 
Si, te recomiendo echarle un ojo a la documentación de PostgreSQL.

Ejemplo de función en plpgsql, aunque podrías usar también las versiones
en Perl y Tcl:

DROP FUNCTION get_otras_respuestas(int, varchar);

CREATE FUNCTION get_otras_respuestas(int, varchar) RETURNS varchar AS '

DECLARE
    otro varchar;

BEGIN   
    SELECT respuesta into otro FROM otras_respuestas WHERE id_asistente =
$1 AND pregunta = $2;
    
    IF NOT FOUND THEN
        RETURN ''POR DEFINIR'';
    END IF;  
        
    RETURN ''<font face = times>'' || otro || ''</font>'';
END;
' LANGUAGE 'plpgsql';

DROP FUNCTION get_giro(int);

CREATE FUNCTION get_giro(int) RETURNS varchar AS ' 

DECLARE
    otro varchar;
    i record;

BEGIN
    SELECT id_giro_empresa INTO i from asistente where id_asistente = $1;
        
    IF NOT FOUND THEN
         RAISE EXCEPTION ''Asistente con id % no encontrado.'', $1;
    END IF;  

    IF ( i.id_giro_empresa = 2147483647) THEN
        RETURN get_otras_respuestas($1,''GIRO_EMPRESA'' );  
    ELSE
        SELECT descripcion INTO otro FROM giro_empresa  WHERE id =
i.id_giro_empresa;
            
        IF NOT FOUND THEN
            RAISE EXCEPTION ''ID i.id_giro_empresa no existe'';
        END IF;  
            
        RETURN otro;
    END IF;
END;
' LANGUAGE 'plpgsql';

-----------------------------
Saludos,

Roberto Andrade Fonseca
randrade@abl.com.mx

--------- Pie de mensaje -------------------------------------------
Archivo historico: http://tlali.iztacala.unam.mx/maillist/pgsql-ayuda
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text   : unsubscribe pgsql-ayuda