Curso PL/SQL. Parte 1

En este curso de PL/SQL veremos desde que es PL/SQL hasta cosas complicadas que nos puedan surgir en cualquier momento, si sigues este curso hasta el final sabrás programar en PL/SQL.  Este curso lo hago teniendo en cuenta que la gente que lo mire ya sabe SQL y tiene conocimientos básicos de programación, si no es así este no es vuestro curso.

El camino puede ser al principio largo y tedioso, pero cuanto más vallamos avanzando más ganas tendrás de seguir.

TEMA 1. Introducción.

  1. ¿Qué es PL/SQL?
  2. Bloques PL/SQL: Anonimos y con Nombre.
  3. Entorno de Trabajo.
  4. Ámbito de Bloque.

1.1 ¿Qué es PL/SQL?

 
PL/SQL (Procedural Language/Structured Query Language) es un lenguaje de programación incrustado en Oracle.
PL/SQL soportara todas las consultas, ya que la manipulación de datos que se usa es la misma que en SQL, incluyendo nuevas características:
  • El manejo de variables.
  • Estructuras modulares.
  • Estructuras de control de flujo y toma de decisiones.
  • Control de excepciones.
El lenguaje PL/SQL está incorporado en:
  • Servidor de la base de datos.
  • Herramientas de Oracle (Forms, Reports, ...).
En un entorno de base de datos los programadores pueden construir bloques PL/SQL para utilizarlos como procedimientos o funciones, o bien pueden escribir estos bloques como parte de scripts SQL*Plus.



1.2 Bloques PL/SQL 

Los bloques en PL/SQL pueden ser de 2 tipos.
  • Bloques anónimos.
  • Bloques con Nombres.

La mayor diferencia entre unos y otros, es que los bloques anónimos no se almacenan en la base de datos, mientras que los bloques con nombre si se almacenan como objetos en la BD.

Para que se entienda de una forma mucho más sencilla, los bloques anónimos son los Main() de C y los bloques con nombre son las funciones.

Los bloques anónimos tienen la siguiente estructura. (lo que esta [] no es obligatorio).

Bloque anónimo.

[Declare]      
                        
[variables]   

BEGIN

[Exception]


END;


--------------------

La zona entre Declare y BEGIN es la zona declarativa, en otras palabras, es donde se declararán TODAS las variables que utilizaremos en el programa, si no tenemos variables, el Declare no hace falta ponerlo.

Entre el BEGIN y END es donde se pondrá todo el código de nuestro programa.

La zona de Exception para que se entienda rápido es un GOTO.

 Bloque con nombre.


Create or Replace Function <nombre>

[Zona declarativa]

BEGIN

[Zona ejecutiva]

[Exception]

END;


1.3. Entorno de trabajo (con bloques anónimos)

El entorno de trabajo es con ficheros externos en los que se crea el código fuente y luego es llamado desde la base de datos, estos ficheros pueden tener una extensión .txt o más frecuentemente .sql

Un ejemplo de código fuente que imprime por pantalla un "Zarpemos Nakamas".

SET SERVEROUTPUT ON

BEGIN

 DBMS_OUTPUT.PUT_LINE('Zarpemos Nakamas');

END;
/

Con esto ya tenemos hecho nuestro primer programa en PL/SQL, ahora lo que tenemos que hacer es ejecutarlo, para ello una de las formas (la que usaremos en este curso) será ejecutarlo desde SQL*Plus.

Para ejecutarlo tenemos que poner el SQL*Plus lo siguiente:

SQL> @<Ruta del archivo>

Esto ejecutara nuestro código PL/SQL.


1.4 Ámbito de Bloque.

En un principio dije que todas las variables de tienen que declarar en la zona de Declare, pero se pueden hacer más zonas de Declare a lo largo de el código PL/SQL, si abrimos un nuevo declare tendremos que poner su correspondiente BEGIN y END; por lo que las variables aunque tengan el mismo nombre si estan en declare distintos tendrán valores distintos. Ejemplo:

Declare

 X NUMBRE := 3;

BEGIN
    pintar x ----> 3

       Declare
             X NUMBER := 7;

       BEGIN

               pintar x -----> 7

        END;

pintar x ---> 3

END;


Explicación de los Join en SQL

Hola a todos, en la entrada de hoy explicare de una forma sencilla y eficaz que son los Join de tablas en SQL y cuales son los diferentes tipos.

Yo, al igual que muchos informáticos, mantengo una relación de Amor/Odio con SQL, ya que hay muchos conceptos que no están muy claros y uno de ellos era el de los Join, por eso como ya lo se quiero explicarlo de una forma sencilla, para que la gente que quiera aprender le cueste menos que a mi. Empecemos!!

Supongamos que tenemos las dos siguientes tablas. La tabla A está a la izquierda, y la tabla B está a la derecha. Las rellenaremos con cuatro registros cada una.

Ahora unamos estas dos tablas por el campo nombre de algunas formas distintas, y veamos si podemos obtener unas representaciones conceptuales con los ingeniosos diagramas de Venn.

Inner join sólo produce los registros que coinciden en las dos tablas A y B.

SELECT * FROM TablaA
INNER JOIN TablaB
ON TablaA.nombre = TablaB.nombre




Full outer join produce el conjunto de todos los registros en las tablas A y B, con registros coincidentes en ambos lados cuando sea posible. Si no hay coincidencia, el lado que falta contendrá null.

SELECT * FROM TablaA
FULL OUTER JOIN TablaB
ON TablaA.nombre = TablaB.nombre














Left outer join produce el conjunto completo de registros de la tabla A, con los registros coincidentes (si están disponibles) en la tabla B. Si no hay coincidencia, el lado derecho contendrá null.

SELECT * FROM TablaA
LEFT OUTER JOIN TablaB
ON TablaA.nombre = TablaB.nombre


Para producir el conjunto de registros en la tabla A, pero no en la tabla B, usamos el mismo Left Outer Join, y luego excluimos los registros que no queremos del lado derecho mediante una cláusula Where.

 SELECT * FROM TablaA
LEFT OUTER JOIN TablaB
ON TablaA.nombre = TablaB.nombre
WHERE TablaB.id IS NULL



Para producir el conjunto de registros únicos de la tabla A y la tabla B, usamos el mismo Full Outer Join, y luego excluimos los registros que no queremos de los dos lados mediante una cláusula Where.

SELECT * FROM TablaA
FULL OUTER JOIN TablaB
ON TablaA.nombre = TablaB.nombre
WHERE TablaA.id IS NULL
OR TablaB.id IS NULL



Espero que les guste la explicación y les sirva mucho.

WPS Office, la suite ofimática con interfaz Ribbon. ¿Te apetece probarla?

WPS Office, una suite ofimática china que podría dar mucho de qué hablar. La he probado. ¿Os apetece a vosotros probarla? Vamos a ello…


WPS office es una suite ofimática china la cual es desarrollada por  Kingsoft Office, ahora desarrollan la versión Linux, que se encuentra en estado beta (¡ojito que se podría comer a vuestra mascota!).

En resumen, WPS Office es una suite ofimática que consta de procesador de texto, hoja de cálculo y presentaciones. Está enfocada en el mercado chino, con un gran soporte del idioma y los diferentes dialectos de la región. Ese es por el momento su mayor hándicap para el usuario occidental. Entre sus características destaca la interfaz de usuario Ribbon (aunque se puede cambiar), al estilo marcado por Microsoft Office 2007, y un -dicen, no lo he podido comprobar- gran soporte de los formatos propietarios de Microsoft. Por contra, carece de soporte Open Document (ODF). Como detalle, se integra con el menú global de Ubuntu.
 
Probar la suite está al alcance de cualquiera, pues en la web oficial hay disponibles instaladores en DEB y RPM de los que en un principio se pueden valer los usuarios de Ubuntu, Linux Mint, Fedora y openSUSE, además de un instalador genérico para los demás. Eso sí, el programa solo tiene versión de 32-bits, por lo que los usuarios de sistemas de 64-bits tienen que instalar las bibliotecas pertinentes. Y es software propietario (que no tiene por qué ser un punto negativo, pero hay que decirlo).



Lo primero es ir descargando WPS Office. Lo segundo, si tu sistema es de 64-bit, instalar los paquetes, que en Ubuntu y derivadas se llaman ia32-libs, en openSUSE patterns-openSUSE-32bit; ambos los encontraréis en los repositorios. Con Fedora me declaro perdido como para explicarlo, pero en Xenode Systems os lo explican por mí. Una vez instalado todo… todo está en chino. Según las instrucciones que se dan en la web, solo es posible traducirlo al inglés (y no del todo, adelanto), de la siguiente manera, terminal mediante:

cd /opt/kingsoft/wps-office/office6/2052

sudo rm qt.qm wps.qm wpp.qm et.qm

Lo anterior elimina unos archivos que no sé qué son exactamente y al abrir cualquiera de las tres aplicaciones que conforman la suite, el inglés será el idioma a utilizar (aprovecho para advertir que yo he probado la suite en Linux Mint 13 Xfce sin problema siguiendo las instrucciones detalladas, pero no puedo asegurar que todo vaya bien en otros sistemas, así que actuad bajo vuestra responsabilidad). Por cierto que también deberíais instalar las fuentes propietarios de Microsoft, si queréis tener plena compatibilidad (y que no os salga un aviso cada vez que ejecutéis la aplicación).

Llegados a este punto, le he echado un vistazo por encima a Kingsoft Writer, Kingsoft Spreadsheet y Kingsoft Presentation, así se llaman respectivamente las aplicaciones de procesador de texto, hoja de cálculo y presentaciones y lo primero que me me ha llamado la atención es la página de inicio de cada una de ellas, que la tienen y se conecta a Internet para mostrar plantillas de documentos. Pero como todo está en chino, ahí me he quedado.

Para terminar, pregunta obligada: ¿qué os parece?