Base de datos

Solo disponible en BuenasTareas
  • Páginas : 15 (3526 palabras )
  • Descarga(s) : 0
  • Publicado : 23 de mayo de 2011
Leer documento completo
Vista previa del texto
Programaci´n de funciones en PL/pgSQL para o PostgreSQL
Roberto Andrade Fonseca. ABL Consultores, S.A. de C.V. 8 de febrero de 2002

1.

Objetivos
Presentar a los asistentes las ventajas de contar con funciones que manejen las ’reglas del negocio’ dentro de una base de datos, PostgreSQL en nuestro caso, para independizarlas del c´digo en que se programen los clientes. o Describir ellenguaje y mostrar ejemplos reales de funciones desarrolladas con PL/pgSQL.

2.

Introducci´n o

Es com´n que los desarrolladores de aplicaciones subutilicen las prestaciones u de las bases de datos relacionales modernas, en ocasiones aimplemente por deconocer las ventajas que le ofrecen o por desconocer su manejo. Dentro de PostgreSQL, la base de datos de c´digo abierto m´s poderosa, o a se puedendesarrollar funciones en varios lenguajes. El lenguaje PL/pgSQL es uno de los m´s utilizados dentro de PostgreSQL, debido a que guarda cierta a similitud con PL/SQL de Oracle y a su facilidad de uso. En este tutorial se mostrar´ la sintaxis, el control de flujo y otras caraca ter´ ısticas del lenguaje, adem´s de presentar´n algunos ejmeplos reales. a a

2.1.

Ventajas de usar PL/pgSQL

SQLes el lenguaje est´ndar para realizar consultas a un servidor de base de a datos. Cada sentencia SQL se ejecuta de manera individual por el servidor, lo cual implica que las aplicaciones cliente deben enviar cada consulta al servidor, esperar a que la procese, recibir los resultados, procesar los datos y despu´s e enviar la siguiente sentencia. Al usar PL/pgSQL es posible relizar c´lculos, manejode cadenas y consultas a dentro del servidor de la base de datos, combinando el poder de un lenguaje procedimental y la facilidad de uso de SQL, minimizando el tiempo de conexi´n o entre el cliente y el servidor.

1

3 NUESTRA BASE DE DATOS DEL TUTORIAL

2

3.

Nuestra base de datos del tutorial

Para ejemplificar el uso de las funciones en PL/pgSQL, vamos a utilizar una base de datosque tiene el siguiente esquema: -- Esquema de la base de datos del tutorial -- de PL/pgSQL CREATE TABLE asistente ( id_asistente SERIAL, id_titulo int REFERENCES titulo, ap_paterno varchar NOT NULL, ap_materno varchar, nombre varchar NOT NULL, sexo char(1) CHECK (sexo in (’M’, ’F’)), id_puesto int REFERENCES puesto, compania varchar, direccion varchar, colonia varchar(40), ciudad varchar,codigo_postal varchar, id_estado varchar REFERENCES estado, id_pais char(2) NOT NULL REFERENCES pais, lada varchar, telefono1 varchar(8), telefono2 varchar(8), fax varchar(8), email varchar, url varchar, id_categoria int NOT NULL REFERENCES categoria DEFAULT 1, id_giro_empresa int REFERENCES giro_empresa, id_lugar_compra int REFERENCES lugar_compra, id_sistema_operativo int REFERENCES sistema_operativo,PRIMARY KEY (id_asistente) );

4.

Estructura de PL/pgSQL

El lenguaje PL/pgSQL es estructura en bloques. Todas las palabras clave y los identificadores pueden escribirse mezclando letras may´sculas y min´sculas. u u Un bloque se definde de la siguiente manera: [] [DECLARE declaraciones]

5 COMENTARIOS, CONSTANTES Y VARIABLES BEGIN sentencias END;

3

Pueden existir varios bloques osub-bloques en la secci´n de sentencias de o un bloque. Los sub-bloques pueden ser usados para ocultar las variables a los bloques m´s externos. a Normalmente una de las sentencias es el valor de retorno, usando la palabra clave RETURN. Las variables declaradas en la secci´n que antecede a un bloque se inicializan o a su valor por omisi´n cada vez que se entra al bloque, no solamente al ser o llamadala funci´n. Por ejemplo: o CREATE FUNCTION estafunc() RETURNS INTEGER AS ’ DECLARE cantidad INTEGER := 30; BEGIN RAISE NOTICE ’’Cantidad contiene aqu´ %’’,cantidad; ı -- Cantidad contiene aqu´ 30 ı cantidad := 50; --- Creamos un sub-bloque -DECLARE cantidad INTEGER := 80; BEGIN RAISE NOTICE ’’Cantidad contiene aqu´ %’’,cantidad; ı -- Cantidad contiene aqu´ 80 ı END; RAISE NOTICE ’’Cantidad...
tracking img