1 / 23

fernando.velasco.p@mail.pucv.cl

INF 340  SGBD Postgres. fernando.velasco.p@mail.pucv.cl. En Toma !. PHP + PostgreSQL. Procedimientos Almacenados en PostgreSQL. Permite varios lenguajes de programación, algunos incorporados y otros se pueden agregar como paquetes adicionales

taima
Download Presentation

fernando.velasco.p@mail.pucv.cl

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. INF 340  SGBD Postgres fernando.velasco.p@mail.pucv.cl En Toma !

  2. PHP + PostgreSQL.

  3. Procedimientos Almacenados en PostgreSQL Permite varios lenguajes de programación, algunos incorporados y otros se pueden agregar como paquetes adicionales El lenguaje más utilizado en postgresql es PLpgSQL, que es un subconjunto de PL/SQL de Oracle.

  4. Funciones CREATE [or replace] FUNCTION nombre[( {[par_mode] [par_nombre] par_tipo [DEFAULT= par_default],}..)][RETURNS=ret_tipo]As $$ …/* Código */ $$ LANGUAGE [lenguaje] [IMMUTABLE | STABLE | VOLATILE]

  5. Funciones par_mode : Si el parámetro es de entrada [IN] {defecto}, salida [OUT], o entrada/salida [IN/OUT] par_nombre : Nombre del praámetro. Si no se especifica, se puede usar por su posición relativa ($1,$2, ..), o bien, definir un alias en “declare” Ej: alias nombre_alias for $1; par_tipo : tipo del parámetro. Cualquier tipo soportado por postgres par_default: Valor por defecto del parámetro (enc aso de ser nulo)

  6. Funciones ret_tipo: Tipo que retornará la función. Puede ser un tipo escalar o estructura (p.e. registro o tabla) Lenguaje: El lenguaje que se utilizará para crear la función. Ej. PLpgSQL IMMUTABLE | STABLE | VOLATILE: IMMUTABLE : La función no trabaja con datos de tabla STABLE : La función ocupa datos de la tabla, pero usa una copia de ésta (no refleja cambios). VOLATILE (defecto): La función ocupa datos directo de la tabla, por ende refleja cualquier cambio en ésta.

  7. Tipos de Datos Postgresql • Numéricos • Enteros • integer • smallinteger • int2 • int4 • int8 • serial • Números aproximados • float • float4 • float8

  8. Tipos de Datos Postgresql • Numéricos • Números exactos • decimal • numeric • money • Caracteres • Char • Varchar • NChar • Nvarchar • Text

  9. Tipos de Datos Postgresql • Fecha y Hora • date • time • timestamp • Cadena de bits • bool • Direcciones • cidr • inet

  10. Tipos de Datos Postgresql • Archivos • blob • clob • Figuras Geométricas • box • circle • line • lseg • point • polygon

  11. PLpgSQL El lenguaje PL/pgSQL es estructurado en bloques, cada bloque tiene el siguiente formato: [DECLARE declaraciones] BEGIN sentencias END;

  12. PLpgSQL Toda variable debe ser declarada. Dicha variable tendrá validez dentro en el bloque donde es declarada, y en los bloques interno, a no ser que se declare otra variable con el mismo nombre: nombre [ CONSTANT ] tipo [ NOT NULL ] [ { DEFAULT | := } valor ];

  13. PLpgSQL En el segmento de declaraciones podemos asignar alias a los parámetros: CREATE FUNCTION es_alumno_ramo(char(8),char(3),int ) RETURNS bool AS $$ DECLARE par_rut ALIAS FOR $1; par_esc ALIAS FOR $2; par_cra ALIAS FOR $3; BEGIN

  14. PL/pgSQL

  15. PLpgSQL NOTA IMPORTANTE: Postgresql permite definir variables del mismo tipo de algún campo o de algún registro de una tabla, permitiendo mantener consistencia si se realiza algún cambio de dichos tipos. Para ello se utiliza: Para un campo: %TYPE Para un registro: %ROWTYPE p.e. DECLARE par_rut alumnos.rut%TYPE;

  16. PLpgSQL Asignaciones: Las asignaciones se realizan mediante el operador “:=“ , ejemplo: rut_nulo := ‘00000000’; Para asignar filas, utiliza la sentencia “Select into”, ejemplo: create function nombre_alumno(char(8)) returns text as $$ DECLARE par_rut ALIAS FOR $1; Datos_Alumno alumnos%ROWTYPE; BEGIN SELECT INTO datos_alumno * FROM alumnos WHERE rut=par_rut; Return(datos_alumno.nombre); ……

  17. PLpgSQL Mensajes: El comando “RAISE” envía mensajes al logs de postgres. RAISE indica errores, por lo tanto, según la severidad, aborta la función: Uso: RAISE nivel ‘formato’ [,identificadores] El formato puede contener el comodín %, el que será remplazo por el valor de [identificadores] Niveles: NOTICE : advertencia, se usa para msg. EXCEPTION : error, aborta la función

  18. Lenguaje de control de flujo Bloque condicional: Bloque IF..THEN …END IF IF (condición) THEN … ELSEIF (condición) …. ELSE … END;

  19. Lenguaje de control de flujo Bloques Iterativos Bloque LOOP....END LOOP; LOOP …. [IF (condición) EXIT End; | EXIT when condición;] END LOOP; Bloque while....LOOP; WHILE expression LOOP statements END LOOP;

  20. Lenguaje de control de flujo Bloque FOR VAR IN V1 .. V2 LOOP FOR variable IN [REVERSE] Vinicial .. Vfinal LOOP; …… END LOOP;

  21. Devolviendo Filas de una función Si se desea retornar varias filas en una función, se debe: Indicar que la función retornará un “set de valores” (SETOF) Crear una variable del tipo tabla%ROWTYPE Usar un for para mostrar cada registro de la tabla: for variable_del_tipo_tabla%rowtype select * from tabla loop return next variable_del_tipo_tabla%rowtype end loop Si se desea retornar filas de un Join, se debe crear un tipo definido por el usuario, con los tipos de los campos a retornar: create type nombre as ({nombre_var1 tipo_var1,})

  22. Funciones

  23. Hagamos en conjunto una clase agradable y participativa.

More Related