GoBack

PostgreSQL Módulo 1 - Funciones

Rodrigo Soliz Rocabado (rodrifer@gmail.com)
June 14, 2007

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 1

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Funciones

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 2

Funciones en PostgreSQL

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

PostgreSQL viene con muchas funciones incorporadas, podemos verlas todas dentro del psql con el comando o examinando la tabla del sistema pg_proc
Ë Ä Ì ¶ ÊÇÅ Ô ÔÖÓ

Pero nosotros podemos declarar nuestras propias funciones de acuerdo a las necesidades de nuestra base de datos.

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 3

Funciones en PL/pgsql

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Uno de los lenguajes soportados para programar funciones en PostgreSQL es el PL/pgsql, se desarrolló exclusivamente para él y es muy parecido al PL/SQL de Oracle. Para poder utilizarlo primero debemos instalarlo en la base de datos que vayamos a utilizar:
Ö Ø Ð Ò ÔÐÔ ×ÕÐ ¹ ÒÓÑ Ö × ¹Í ÒÓÑ Ö Ù×Ù Ö Ó

o si ya estamos conectados a la base de datos:
Ê Ì Ä Æ Í ÔÐÔ ×ÕÐ

Nota: En la instalación de PostgreSQL para Windows el lenguaje procedural Pl/pgsql esta instalado desde el principio, en distribuciones GNU/Linux no.

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 4

Partes de una función

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Ê Ì ÍÆ ÌÁÇÆ ÒÓÑ Ö ÙÒ ÓÒ´Ô Ö Ñ¸ Ô Ö Ñµ Ê ÌÍÊÆË Ø ÔÓÖ ØÓÖÒÓ Ë °° Ä Ê Ú Ö Ð Ú Ö Ð ÁÆ × ÒØ Ò ¹¹ ×ØÓ × ÙÒ ÓÑ ÒØ Ö Ó × ÒØ Ò »¶ ×ØÓ × ÙÒ ÐÓÕÙ ÓÑ ÒØ Ö Ó ¶» × ÒØ Ò Ê ÌÍÊÆ Ö ØÓÖÒÓ Æ °° Ä Ò Ù ³ÔÐÔ ×Õг

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 5

Ejemplo

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Ê Ì ÍÆ ÌÁÇÆ ×ÙÑ ´ ÒØ ¸ ÒØ µ Ê ÌÍÊÆË ÒØ Ë °° Ä Ê ÒØ ÒØ Ö × ÒØ ÁÆ °½ °¾ Ö × · Ê ÌÍÊÆ Ö × Æ °° Ä Ò Ù ³ÔÐÔ ×Õг

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 6

Invocando a una función

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Como es que se invoca a una función? Dentro una sentencia SELECT:
Ë Ä Ì ×ÙÑ ´¿¸ µ ×ÙÑ ¹¹¹¹¹¹

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 7

Variables

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Como se asigna un valor a una variable?
ÒÓÑ Ö Ú Ö ÑÔÐÓ ÙÜ ½ Ð Ú ÐÓÖ

Declarar una variable y asignarle un valor?
ÒÓÑ Ö Ú Ö ÑÔÐÓ ÙÜ ÓÓÐ Ò ØÖÙ Ð Ø ÔÓÚ Ö Ð Ú ÐÓÖ

El uso de variables es idéntico a los lenguajes de programación que comunmente usamos.

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 8

Ejemplo (Recursión)

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Ê Ì ÍÆ ÌÁÇÆ ´ ÒØ µ Ê ÌÍÊÆË ÒØ Ë °° Ä Ê ÒØ Ö × ÒØ ¼ ÁÆ °½ Á ´ ½ ÇÊ ¾µ ÌÀ Æ Ö × ½ ÄË Ö × ´ ¹ ¾µ · ´ ¹ ½µ Æ Á Ê ÌÍÊÆ Ö × Æ °° Ä Ò Ù ³ÔÐÔ ×Õг

Asi es, tenemos la posibilidad de utilizar funciones recursivas.

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 9

Probémoslo

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Hagamos la prueba:
Ë Ä Ì ´½¼µ

¹¹¹¹¹¹

Recomendación: dada la definición de nuestra función fib, no es recomendable calcular números muy elevados, si es que no queremos que nuestro servidor se colapse ;-)

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 10

Estructuras de control

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Podemos usar las estructuras de control más comunes disponibles en otros lenguajes de programación: IF - THEN - ELSE FOR WHILE Adicionalmente tenemos el LOOP (ver documentación), pero no hace nada que las anteriores no puedan lograr.

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 11

IF

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Ê Ì ÍÆ ÌÁÇÆ ×ÔÓ× Ø ÚÓ ´ ÒØ µ Ê ÌÍÊÆË ÓÓÐ Ò Ë °° Ä Ê ÒØ Ö × ÓÓÐ Ò Ð× ÁÆ °½ Á ´ ¼µ ÌÀ Æ Ö × ØÖÙ ÄË Á ´ ¼µ ÌÀ Æ Ö × ØÖÙ Æ Á Æ Á Ê ÌÍÊÆ Ö × Æ °° Ä Ò Ù ³ÔÐÔ ×Õг

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 12

WHILE

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Ê Ì ÍÆ ÌÁÇÆ ÓÒ´µ Ê ÌÍÊÆË ÒØ Ë °° Ä Ê ÓÒØ ÒØ Ö × ÒØ ÁÆ ÓÒØ ½ Ö × ¼ ÏÀÁÄ ´ ÓÒØ ½¼µ ÄÇÇÈ Ö × Ö × · ÓÒØ ÓÒØ ÓÒØ · ½ Æ ÄÇÇÈ Ê ÌÍÊÆ Ö × Æ °° Ä Ò Ù ³ÔÐÔ ×Õг

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 13

FOR

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Ê Ì ÍÆ ÌÁÇÆ ÓÒ¾´µ Ê ÌÍÊÆË ÒØ Ë °° Ä Ê ÓÒØ ÒØ Ö × ÒØ ÁÆ Ö × ¼ ÇÊ ÓÒØ ÁÆ ½ ºº ½¼ ÄÇÇÈ Ö × Ö × · ÓÒØ Æ ÄÇÇÈ Ê ÌÍÊÆ Ö × Æ °° Ä Ò Ù ³ÔÐÔ ×Õг

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 14

Trabajando con tablas

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Pero lo que nos interesa es trabajar con los datos de una tabla. Entonces veamos un ejemplo más práctico. Supongamos que tenemos una tabla ítem que almacena la información de piezas de hardware vendidas por una tienda de computadoras.
Ê Ì Ì Ä Ø Ñ Ø Ñ ÒÓÑ Ö Ø ÔÓ ÒØ ÔÖ Ó ÓÑÔÖ ÔÖ Ó Ú ÒØ ÇÆËÌÊ ÁÆÌ Ø Ñ ´ × Ö Ð ÆÇÌ ÆÍÄĸ Ú Ö Ö´½ ¼µ ÆÇÌ Ú Ö Ö´½¼¼µ ÆÇÌ ÒØ ÆÇÌ ÆÍÄÄ ÒÙÑ Ö ´ ¸¾µ ÆÇÌ ÒÙÑ Ö ´ ¸¾µ ÆÇÌ Ô ÈÊÁÅ Ê Ã

µ

ÆÍÄĸ ÆÍÄĸ ÍÄÌ ¼¸ ÆÍÄĸ ÆÍÄĸ ´ Ø Ñ µ

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 15

Trabajando con tablas

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Queremos que haya un función comprar_item() que haga lo siguiente: 1. Cree una tabla nueva llamada item_por_comprar que almacene los datos de los items que tengan cantidad = 0, o sea los items que hay que renovar para luego poner a la venta. 2. Busque en la tabla item todos los items que ya no estén en stock y los inserte en la tabla item_por_comprar 3. Nos devuelva la cantidad de items que ya no se encuentran en stock

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 16

Primeros pasos

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Primero creamos una tabla para almacenar los items que ya no hay disponibles en stock, la tabla item_por_comprar:
Ê µ Ì Ì Ä Ø Ñ ÔÓÖ ÓÑÔÖ Ö ´ Ø Ñ ÒØ ÆÇÌ ÆÍÄĸ ÒÓÑ Ö Ú Ö Ö´½ ¼µ

Esta tabla contiene información que solo es importante momentáneamente, no nos interesa almacenarla permanentemente en la base de datos, por lo que la reemplazaremos cada vez que ejecutemos la función.

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 17

La función

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Empezamos a definir la función:
Ê Ì ÇÊ Ê ÌÍÊÆË Ë °° Ä Ê ÓÒØ Ð ÁÆ ººº Æ °° Ä Ò Ù Ê ÈÄ ÒØ ÍÆ ÌÁÇÆ ÓÑÔÖ Ö Ø Ñ´µ

Ø Ñ ÒØ Ø Ñ Ø Ñ±ÊÇÏÌ È

³ÔÐÔ ×Õг

Declaramos dos variables, cont_item que tendrá el número de items que tengan cantidad = 0 y fila_item que tendrá como campos, los atributos de la tabla item.

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 18

Variables compuestas

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Podemos declarar variables compuestas que puedan almacenar los campos de una determinada fila de una determinada tabla.
Ð Ø Ñ Ø Ñ±ÊÇÏÌ È

Indica que la variable fila_item podrá almacenar los campos de cualquier fila de la tabla item. Para acceder a los valores de la variable fila_item usamos una notación ya conocida:
Ð Ð Ð Ø ÑºÒÓÑ Ö Ø Ñº ÒØ Ø ÑºÔÖ Ó

ÓÑÔÖ

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 19

Continuamos con la función

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Ê Ì ÇÊ Ê ÈÄ ÍÆ ÌÁÇÆ ÓÑÔÖ Ö Ø Ñ´µ Ê ÌÍÊÆË ÒØ Ë °° Ä Ê ÓÒØ Ø Ñ ÒØ Ð Ø Ñ Ø Ñ±ÊÇÏÌ È ÁÆ ÊÇÈ Ì Ä Ø Ñ ÔÓÖ ÓÑÔÖ Ö Ê Ì Ì Ä Ø Ñ ÔÓÖ ÓÑÔÖ Ö ´ Ø Ñ ÒÓÑ Ö Ú Ö Æ °° Ä Ò Ù ³ÔÐÔ ×Õг

ÒØ ÆÇÌ ÆÍÄĸ Ö´½ ¼µµ

Cada vez que vayamos a ejecutar la función borraremos la anterior tabla y crearemos una nueva con datos actualizados. No nos interesa almacenar la información que se genera cada vez que ejecutamos la función, solo la información más reciente.

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 20

Continuamos con la función

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Ê Ì ÇÊ Ê ÈÄ ÍÆ ÌÁÇÆ ÓÑÔÖ Ö Ê ÌÍÊÆË ÒØ Ë °° Ä Ê ÓÒØ Ø Ñ ÒØ Ð Ø Ñ Ø Ñ±ÊÇÏÌ È ÁÆ ÊÇÈ Ì Ä Ø Ñ ÔÓÖ ÓÑÔÖ Ö Ê Ì Ì Ä Ø Ñ ÔÓÖ ÓÑÔÖ Ö ´ ÒÓÑ Ë Ä Ì ÇÍÆÌ´¶µ ÁÆÌÇ ÓÒØ Ø Ñ Æ °° Ä Ò Ù ³ÔÐÔ ×Õг

Ø Ñ´µ

Ø Ñ ÒØ ÆÇÌ ÆÍÄĸ Ö Ú Ö Ö´½ ¼µµ ÊÇÅ Ø Ñ ÏÀ Ê ÒØ

¼

Almacenamos en cont_item la cantidad de items que tienen cantidad = 0

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 21

SELECT INTO

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Podemos asignar un valor a una variable directamente dentro de una consulta SQL
Ë Ä Ì ÇÍÆÌ´¶µ ÁÆÌÇ ÓÒØ Ø Ñ ÊÇÅ Ø Ñ ÏÀ Ê ÒØ ¼

cont_item es una variable tipo int4 y la consulta también devuelve un tipo compatible, por lo tanto en cont_item tendremos un valor correcto.

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 22

Continuamos con la función

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Ê Ì ÇÊ Ê ÈÄ ÍÆ ÌÁÇÆ ÓÑÔÖ Ö Ø Ñ´µ Ê ÌÍÊÆË ÒØ Ë °° Ä Ê ÓÒØ Ø Ñ ÒØ Ð Ø Ñ Ø Ñ±ÊÇÏÌ È ÁÆ ÊÇÈ Ì Ä Ø Ñ ÔÓÖ ÓÑÔÖ Ö Ê Ì Ì Ä Ø Ñ ÔÓÖ ÓÑÔÖ Ö ´ Ø Ñ ÒÓÑ Ö Ú Ö Ë Ä Ì ÇÍÆÌ´¶µ ÁÆÌÇ ÓÒØ Ø Ñ ÊÇÅ Ø ÇÊ Ð Ø Ñ ÁÆ Ë Ä Ì ¶ ÊÇÅ Ø Ñ ÏÀ ÄÇÇÈ ÁÆË ÊÌ ÁÆÌÇ Ø Ñ ÔÓÖ ÓÑÔÖ Ö Î ÄÍ Ë ´ Ð Ø Ñº Ø Ñ ¸ Æ ÄÇÇÈ Æ °° Ä Ò Ù ³ÔÐÔ ×Õг

ÒØ ÆÇÌ ÆÍÄĸ Ö´½ ¼µµ Ñ ÏÀ Ê ÒØ Ê ÒØ ¼ Ð Ø ÑºÒÓÑ Ö µ

¼

Definimos un bucle que recorra la tabla temporal que tiene los items con cantidad = 0 y por cada una insertamos una fila en la tabla item_por_comprar

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 23

Bucles en tablas

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Vimos que podiamos definir un bucle con la sentencia FOR de esta forma:
ÇÊ Ú Ö Ð ÁÆ Ö Ò Ó

Si trabajamos con variables compuestas y tablas, podemos colocar en variable una variable compuesta y en rango una tabla cualquiera (o un subconjunto), la variable compuesta recorrerá toda la tabla tomando los valores de cada una de las filas, si tienen los mismos atributos por supuesto.
ÇÊ Ð Ø Ñ ÁÆ Ë Ä Ì ¶ ÊÇÅ Ø Ñ ÏÀ Ê ÒØ ¼

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 24

Continuamos con la función

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Ê Ì ÇÊ Ê ÈÄ ÍÆ ÌÁÇÆ ÓÑÔÖ Ö Ø Ñ´µ Ê ÌÍÊÆË ÒØ Ë °° Ä Ê ÓÒØ Ø Ñ ÒØ Ð Ø Ñ Ø Ñ±ÊÇÏÌ È ÁÆ ÊÇÈ Ì Ä Ø Ñ ÔÓÖ ÓÑÔÖ Ö Ê Ì Ì Ä Ø Ñ ÔÓÖ ÓÑÔÖ Ö ´ Ø Ñ ÒÓÑ Ö Ú Ö Ë Ä Ì ÇÍÆÌ´¶µ ÁÆÌÇ ÓÒØ Ø Ñ ÊÇÅ Ø ÇÊ Ð Ø Ñ ÁÆ Ë Ä Ì ¶ ÊÇÅ Ø Ñ ÏÀ ÄÇÇÈ ÁÆË ÊÌ ÁÆÌÇ Ø Ñ ÔÓÖ ÓÑÔÖ Ö Î ÄÍ Ë ´ Ð Ø Ñº Ø Ñ ¸ Æ ÄÇÇÈ Ê ÌÍÊÆ ÓÒØ Ø Ñ Æ °° Ä Ò Ù ³ÔÐÔ ×Õг

ÒØ ÆÇÌ ÆÍÄĸ Ö´½ ¼µµ Ñ ÏÀ Ê ÒØ Ê ÒØ ¼ Ð Ø ÑºÒÓÑ Ö µ

¼

Finalmente retornamos cont_item para saber cuantos items han sido insertados.

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 25

Probando la función

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Probemos insertando algunas filas en la tabla item:
Î Î Î Î Î Î ÁÆË ÊÌ ÁÆÌÇ Ø Ñ ´ÒÓÑ Ö ¸ Ø ÔÓ¸ ÒØ ¸ ÔÖ Ó ÓÑÔÖ ¸ ÔÖ Ó Ú ÒØ ÄÍ Ë ´³ËÛ Ø Ð Ò ÔÙ ÖØÓ׳¸ ³ËÛ Ø ³¸ ¾¸ ¿¾º ¸ º µ ÁÆË ÊÌ ÁÆÌÇ Ø Ñ ´ÒÓÑ Ö ¸ Ø ÔÓ¸ ÒØ ¸ ÔÖ Ó ÓÑÔÖ ¸ ÔÖ Ó Ú ÒØ ÄÍ Ë ´³ Ð Ò Ã³¸ ³ÅÓ Ñ³¸ ¼¸ ½¼º ¸ ½ º µ ÁÆË ÊÌ ÁÆÌÇ Ø Ñ ´ÒÓÑ Ö ¸ Ø ÔÓ¸ ÒØ ¸ ÔÖ Ó ÓÑÔÖ ¸ ÔÖ Ó Ú ÒØ ÄÍ Ë ´³Ë Ñ×ÙÒ ½ ³¸ ³ÅÓÒ ØÓÖ³¸ ¼¸ ½¼¼º¼¸ ½¾¼º¼µ ÁÆË ÊÌ ÁÆÌÇ Ø Ñ ´ÒÓÑ Ö ¸ Ø ÔÓ¸ ÒØ ¸ ÔÖ Ó ÓÑÔÖ ¸ ÔÖ Ó Ú ÒØ ÄÍ Ë ´³ ʾ ½¾» ¿¿³¸ ³Ê ų¸ ½ ¸ ¼º¼¸ º¼µ ÁÆË ÊÌ ÁÆÌÇ Ø Ñ ´ÒÓÑ Ö ¸ Ø ÔÓ¸ ÒØ ¸ ÔÖ Ó ÓÑÔÖ ¸ ÔÖ Ó Ú ÒØ ÄÍ Ë ´³ÆÎÁ Á ÇÊ ¾¼¼³¸ ³Ì Ö Ø Î Ó³¸ ¸ ¼º¼¸ º µ ÁÆË ÊÌ ÁÆÌÇ Ø Ñ ´ÒÓÑ Ö ¸ Ø ÔÓ¸ ÒØ ¸ ÔÖ Ó ÓÑÔÖ ¸ ÔÖ Ó Ú ÒØ ÄÍ Ë ´³È ÒØ ÙÑ ¿º¾ À ¼¼»¾Å ³¸ ³ÈÖÓ × ÓÖ³¸ ¸ ¾¼¼º¼¸ ¾¿¼º¼µ µ µ µ µ µ µ

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 26

Probando la función

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Ejecutemos la función:
Ë Ä Ì ÓÑÔÖ Ö Ø Ñ´µ

Veámos el contenido de la tabla item_por_comprar:
Ë Ä Ì ¶ ÊÇÅ Ø Ñ ÔÓÖ ÓÑÔÖ Ö

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 27

Una variante de la funcion anterior

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Utilicemos la misma tabla item y hagamos una función patrimonio() que nos retorne: El valor total de todos los items disponibles en la tienda. o sea : cantidad x precio_venta (de cada item)

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 28

Una variante de la función anterior

Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función Variables Estructuras de control IF WHILE FOR Trabajando con tablas Variables compuestas SELECT INTO Bucles en tablas

Ê Ì ÇÊ Ê ÈÄ ÍÆ ÌÁÇÆ Ô ØÖ ÑÓÒ Ó´µ Ê ÌÍÊÆË ÒÙÑ Ö ´ ¸¾µ Ë °° Ä Ê ØÓØ Ð ÒÙÑ Ö ´ ¸¾µ Ð Ø Ñ Ø Ñ±ÊÇÏÌ È ÁÆ ØÓØ Ð ¼º¼ ÇÊ Ð Ø Ñ ÁÆ Ë Ä Ì ¶ ÊÇÅ Ø Ñ ÏÀ Ê ÄÇÇÈ ØÓØ Ð ØÓØ Ð · Ð Ø Ñº ÒØ ¶ Æ ÄÇÇÈ Ê ÌÍÊÆ ØÓØ Ð Æ °° Ä Ò Ù ³ÔÐÔ ×Õг

ÒØ Ð Ø ÑºÔÖ

¼ Ó Ú ÒØ

Veamos como el tipo de retorno de la funcion ha cambiado, ya no es int4 sino numeric.

http://www.postgresql.org

PostgreSQL Módulo 1 – Slide 29