Está en la página 1de 30

GoBack

PostgreSQL Módulo 1 - Funciones
PostgreSQL Módulo 1 - Funciones

Rodrigo Soliz Rocabado (rodrifer@gmail.com)

June 14, 2007

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
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Funciones PostgreSQL Módulo 1 –

http://www.postgresql.org

Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Funciones PostgreSQL Módulo 1 – Slide 2

Funciones

PostgreSQL Módulo 1 – Slide 2

Funciones en PostgreSQL

Funciones en PostgreSQL Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Funciones en PostgreSQL Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL viene con muchas

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL viene con muchas funciones incorporadas, podemos

PostgreSQL viene con muchas funciones incorporadas, podemos verlas todas dentro del

psql con el comando o examinando la tabla del sistema pg_proc

con el comando o examinando la tabla del sistema pg_proc Pero nosotros podemos declarar nuestras propias

Pero nosotros podemos declarar nuestras propias funciones de acuerdo a las

necesidades de nuestra base de datos.

PostgreSQL Módulo 1 – Slide 3

Funciones en PL/pgsql

Funciones en PL/pgsql Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Funciones en PL/pgsql Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Uno de los lenguajes soportados

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Uno de los lenguajes soportados para programar funciones en

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:

instalarlo en la base de datos que vayamos a utilizar: o si ya estamos conectados a

o si ya estamos conectados a la base de datos:

a utilizar: o si ya estamos conectados a la base de datos: Nota : En la

Nota: En la instalación de PostgreSQL para Windows el lenguaje procedural Pl/pgsql esta

instalado desde el principio, en distribuciones GNU/Linux no.

PostgreSQL Módulo 1 – Slide 4

Partes de una función

Partes de una función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando
Partes de una función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
con tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL Módulo 1 – Slide 5

http://www.postgresql.org

con tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL Módulo 1 – Slide 5
con tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL Módulo 1 – Slide 5

PostgreSQL Módulo 1 – Slide 5

Ejemplo

Ejemplo Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función
Ejemplo Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
con tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL Módulo 1 – Slide 6

http://www.postgresql.org

con tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL Módulo 1 – Slide 6
con tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL Módulo 1 – Slide 6

PostgreSQL Módulo 1 – Slide 6

Invocando a una función

Invocando a una función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando
Invocando a una función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Como es que se invoca a una

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Como es que se invoca a una función? Dentro una

Como es que se invoca a una función?

Dentro una sentencia SELECT:

Como es que se invoca a una función? Dentro una sentencia SELECT : PostgreSQL Módulo 1

PostgreSQL Módulo 1 – Slide 7

Variables

Variables Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función
Variables Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Como se asigna un valor a una

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Como se asigna un valor a una variable? Declarar una

Como se asigna un valor a una variable?

Como se asigna un valor a una variable? Declarar una variable y asignarle un valor? El

Declarar una variable y asignarle un valor?

a una variable? Declarar una variable y asignarle un valor? El uso de variables es idéntico

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

PostgreSQL Módulo 1 – Slide 8

Ejemplo (Recursión)

Ejemplo (Recursión) Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una
Ejemplo (Recursión) Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Asi es, tenemos la posibilidad de

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Asi es, tenemos la posibilidad de utilizar funciones
SELECT INTO Bucles en tablas http://www.postgresql.org Asi es, tenemos la posibilidad de utilizar funciones

Asi es, tenemos la posibilidad de utilizar funciones recursivas.

PostgreSQL Módulo 1 – Slide 9

Probémoslo

Probémoslo Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función
Probémoslo Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Hagamos la prueba: Recomendación

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Hagamos la prueba: Recomendación : dada la definición de

Hagamos la prueba:

en tablas http://www.postgresql.org Hagamos la prueba: Recomendación : dada la definición de nuestra función

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 ;-)

PostgreSQL Módulo 1 – Slide 10

Estructuras de control

Estructuras de control Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Estructuras de control Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Podemos usar las estructuras de

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Podemos usar las estructuras de control más comunes

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.

PostgreSQL Módulo 1 – Slide 11

IF

IF Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función
IF Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL Módulo 1 – Slide 12

http://www.postgresql.org

tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL Módulo 1 – Slide 12
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL Módulo 1 – Slide 12

PostgreSQL Módulo 1 – Slide 12

WHILE

WHILE Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función
WHILE Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL Módulo 1 – Slide 13

http://www.postgresql.org

tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL Módulo 1 – Slide 13
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL Módulo 1 – Slide 13

PostgreSQL Módulo 1 – Slide 13

FOR

FOR Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función
FOR Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una función
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL Módulo 1 – Slide 14

http://www.postgresql.org

tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL Módulo 1 – Slide 14
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org PostgreSQL Módulo 1 – Slide 14

PostgreSQL Módulo 1 – Slide 14

Trabajando con tablas

Trabajando con tablas Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Trabajando con tablas Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Pero lo que nos interesa es

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Pero lo que nos interesa es trabajar con los datos

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.

almacena la información de piezas de hardware vendidas por una tienda de computadoras. PostgreSQL Módulo 1

PostgreSQL Módulo 1 – Slide 15

Trabajando con tablas

Trabajando con tablas Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Trabajando con tablas Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Queremos que haya un función

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Queremos que haya un función comprar_item() que haga lo

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

PostgreSQL Módulo 1 – Slide 16

Primeros pasos

Primeros pasos Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una
Primeros pasos Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Primero creamos una tabla para

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Primero creamos una tabla para almacenar los items que ya

Primero creamos una tabla para almacenar los items que ya no hay disponibles en stock,

la tabla item_por_comprar:

ya no hay disponibles en stock, la tabla item_por_comprar : Esta tabla contiene información que solo

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.

PostgreSQL Módulo 1 – Slide 17

La función

La función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una
La función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Empezamos a definir la función:

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Empezamos a definir la función: Declaramos dos variables,

Empezamos a definir la función:

http://www.postgresql.org Empezamos a definir la función: Declaramos dos variables, cont_item que tendrá el número

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.

PostgreSQL Módulo 1 – Slide 18

Variables compuestas

Variables compuestas Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una
Variables compuestas Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Podemos declarar variables

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Podemos declarar variables compuestas que puedan almacenar

Podemos declarar variables compuestas que puedan almacenar los campos de una

determinada fila de una determinada tabla.

campos de una determinada fila de una determinada tabla. Indica que la variable fila_item podrá almacenar

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:

Para acceder a los valores de la variable fila_item usamos una notación ya conocida: PostgreSQL Módulo

PostgreSQL Módulo 1 – Slide 19

Continuamos con la función

Continuamos con la función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando
Continuamos con la función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Cada vez que vayamos a ejecutar la

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Cada vez que vayamos a ejecutar la función borraremos la
SELECT INTO Bucles en tablas http://www.postgresql.org Cada vez que vayamos a ejecutar la función borraremos la

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.

PostgreSQL Módulo 1 – Slide 20

Continuamos con la función

Continuamos con la función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando
Continuamos con la función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Almacenamos en cont_item la

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Almacenamos en cont_item la cantidad de items que tienen
SELECT INTO Bucles en tablas http://www.postgresql.org Almacenamos en cont_item la cantidad de items que tienen

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

PostgreSQL Módulo 1 – Slide 21

SELECT INTO

SELECT INTO Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una
SELECT INTO Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a una
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Podemos asignar un valor a una

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Podemos asignar un valor a una variable directamente dentro

Podemos asignar un valor a una variable directamente dentro de una consulta SQL

valor a una variable directamente dentro de una consulta SQL cont_item es una variable tipo int4

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.

PostgreSQL Módulo 1 – Slide 22

Continuamos con la función

Continuamos con la función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando
Continuamos con la función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Definimos un bucle que recorra la

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Definimos un bucle que recorra la tabla temporal que tiene
SELECT INTO Bucles en tablas http://www.postgresql.org Definimos un bucle que recorra la tabla temporal que tiene

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

PostgreSQL Módulo 1 – Slide 23

Bucles en tablas

Bucles en tablas Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Bucles en tablas Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Vimos que podiamos definir un

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Vimos que podiamos definir un bucle con la sentencia FOR

Vimos que podiamos definir un bucle con la sentencia FOR de esta forma:

definir un bucle con la sentencia FOR de esta forma: Si trabajamos con variables compuestas y

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.

los valores de cada una de las filas, si tienen los mismos atributos por supuesto. PostgreSQL

PostgreSQL Módulo 1 – Slide 24

Continuamos con la función

Continuamos con la función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando
Continuamos con la función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Finalmente retornamos cont_item

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Finalmente retornamos cont_item para saber cuantos items
SELECT INTO Bucles en tablas http://www.postgresql.org Finalmente retornamos cont_item para saber cuantos items

Finalmente retornamos cont_item para saber cuantos items han sido insertados.

PostgreSQL Módulo 1 – Slide 25

Probando la función

Probando la función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Probando la función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Probemos insertando algunas filas

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Probemos insertando algunas filas en la tabla item:

Probemos insertando algunas filas en la tabla item:

en tablas http://www.postgresql.org Probemos insertando algunas filas en la tabla item: PostgreSQL Módulo 1 – Slide

PostgreSQL Módulo 1 – Slide 26

Probando la función

Probando la función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Probando la función Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función Invocando a
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Ejecutemos la función: Veámos el

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Ejecutemos la función: Veámos el contenido de la tabla

Ejecutemos la función:

en tablas http://www.postgresql.org Ejecutemos la función: Veámos el contenido de la tabla item_por_comprar :

Veámos el contenido de la tabla item_por_comprar:

Ejecutemos la función: Veámos el contenido de la tabla item_por_comprar : PostgreSQL Módulo 1 – Slide

PostgreSQL Módulo 1 – Slide 27

Una variante de la funcion anterior

Una variante de la funcion anterior Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una
Una variante de la funcion anterior Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Utilicemos la misma tabla item y

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Utilicemos la misma tabla item y hagamos una función

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)

PostgreSQL Módulo 1 – Slide 28

Una variante de la función anterior

Una variante de la función anterior Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una
Una variante de la función anterior Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una
Funciones Funciones en PostgreSQL Funciones en PL/pgsql Partes de una función 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
tablas Variables compuestas SELECT INTO Bucles en tablas http://www.postgresql.org Veamos como el tipo de retorno de

http://www.postgresql.org

SELECT INTO Bucles en tablas http://www.postgresql.org Veamos como el tipo de retorno de la funcion ha
SELECT INTO Bucles en tablas http://www.postgresql.org Veamos como el tipo de retorno de la funcion ha

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

PostgreSQL Módulo 1 – Slide 29