estudiante
Introducción, Ejemplos
Álvaro Herrera
13 de noviembre de 2004
Álvaro Herrera
Funciones y TriggersIntroducción, Ejemplos
Contenidos
Funciones: ¿para qué?
Lenguajes
Tipos de funciones
Creación de funciones
tradicionales
SRFs
Funciones para triggers
Indices Funcionales
Álvaro Herrera
Funciones y TriggersIntroducción, Ejemplos
¿Para quéquiero funciones?
Mantener lógica lejos de la aplicación
consistencia entre aplicaciones
reducción de funcionalidad duplicada
Acceso predefinido a objetos restringidos
Escoger herramienta adecuada a cada caso
Algunas cosas necesitan lenguaje procedural
SQL es declarativo
se necesita poder expresivo distinto
Álvaro Herrera
Funciones y TriggersIntroducción, Ejemplos
Los lenguajesPostgreSQL soporta múltiples lenguajes procedurales
saber usar el apropiado en cada caso
conocer debilidades, fortalezas de cada uno
Hackers:
agregar soporte a nuevos lenguajes
Lenguajes confiables (trusted)
se puede “desconfiar” del usuario
Álvaro Herrera
Funciones y TriggersIntroducción, Ejemplos
Lenguajes: SQL
Lenguaje más básico y simple
No otorga poder adicionalPermite simplificar consultas
Álvaro Herrera
Funciones y TriggersIntroducción, Ejemplos
Lenguajes: PL/pgSQL
PL por excelencia
Procedural
Sintaxis para loops, condicionales, etc
Fácil de usar
portar desde Oracle PL/SQL
sintaxis simple y apropiada
No particularmente veloz ···
cache de planes de ejecución
Álvaro Herrera
Funciones y TriggersIntroducción, EjemplosLenguajes: C
Muy potente, flexible
Excelente rendimiento
Tiene acceso a todo
ejecutar consultas, escribir archivos, etc
incluso a botar el proceso servidor
Obtuso, pesado, complicado, peligroso
usarlo sólo en caso de necesidad!
No es confiable (trusted)
Álvaro Herrera
Funciones y TriggersIntroducción, Ejemplos
Lenguajes: scripting
Tcl
Perl
Python
PHP
otros
Álvaro HerreraFunciones y TriggersIntroducción, Ejemplos
Lenguajes: PL/R
Mención especial
brillantemente mantenido
Propósito específico
manejo estadístico
Álvaro Herrera
Funciones y TriggersIntroducción, Ejemplos
Lenguajes: conclusiones
Experimentar, usar, familiarizarse
Puede alivianar el trabajo ···
si se usa la herramienta adecuada
Puede mejorar rendimiento
“prematureoptimization is the root of all evil”
(Donald Knuth)
Álvaro Herrera
Funciones y TriggersIntroducción, Ejemplos
Tipos de funciones
Según lo que retornan
Funciones “normales”
SRF (set-returning function)
Agregación
Especiales
trigger
language_handler
Privilegios durante invocación
security definer
security invoker
Álvaro Herrera
Funciones y TriggersIntroducción, EjemplosFunciones Tradicionales
Retornan un solo resultado
escalar o tupla
Es posible retornar un cursor abierto
Pueden tener efectos secundarios
tabla temporal
Álvaro Herrera
Funciones y TriggersIntroducción, Ejemplos
Sintaxis de Creación de Funciones
CREATE [OR REPLACE] FUNCTION
([tipo argumento], ···)
RETURNS [tipo resultado]
{ LANGUAGE lenguaje
| IMMUTABLE | STABLE |VOLATILE
| CALLED ON NULL INPUT
| RETURNS NULL ON NULL INPUT
| STRICT
| [EXTERNAL] SECURITY INVOKER
| [EXTERNAL] SECURITY DEFINER
| AS ’definición’
| AS ’archivo’, ’símbolo’
} ···
Álvaro Herrera
Funciones y TriggersIntroducción, Ejemplos
Creación de Funciones: atributos
IMMUTABLE
retorna lo mismo con los mismos argumentos
no hace búsquedas en la BD!
STABLE
como immutable,pero puede cambiar con el estado de la BD
VOLATILE
puede cambiar de una llamada a otra
si tiene efectos secundarios
Álvaro Herrera
Funciones y TriggersIntroducción, Ejemplos
Creación de Funciones: atributos (2)
STRICT
RETURNS NULL ON NULL INPUT
si algún argumento es NULL, no es necesario llamarla
CALLED ON NULL INPUT
debe ser invocada
Álvaro Herrera
Funciones y...
Regístrate para leer el documento completo.