Compatibilidad SQL en DB2 9.7

Desde desencadenantes hasta mejoradores de objeto: Una demostración del los nuevos recursos de compatibilidad de Oracle.

Desde desencadenantes hasta mejoradores de objeto, este artículo ofrece una demostración del los nuevos recursos de compatibilidad de Oracle en DB2 9.7.

Anil Mahadev, Campeón de Datos IBM, IT Market Strategy

Anil Mahadev es un Campeón de Datos IBM y miembro de la Junta Directiva del Foro IDUG en India. Actualmente él trabaja como consultor independiente en Bangalore, India, y explorando implementaciones de bases de datos, agrupaciones en clúster de Windows, alta disponibilidad y estrategias para plataformas y aplicaciones multi-bases de datos.



07-06-2011

¡Convocando a todos los desarrolladores! ¿Tiene usted habilidades en bases de datos Oracle? ¿Desearía poder reutilizar sus conocimientos y código PL/SQL en otra plataforma de base de datos?

El IBM DB2 para Linux, UNIX y Windows (LUW) ha tenido una renovación. Impulsado por los requerimientos presentes y futuros de los clientes en cuanto a mejoras para ahorros en costos, el último release, DB2 9.7, proporciona una gran cantidad de nuevas tecnologías en á reas conocidas como la autonomía (auto-administración) y la Compresión Profunda (vea "DB2 9.7: Todo tiene sentido" en esta edición). Pero la cubierta de les pastel es una colección de capacidades que se enfocan en la compatibilidad con SQL. Estos recursos hacen que DB2 sea más fácil para adoptar SQL como su software de base de datos, de manera que usted pueda aprovechar sus características de ahorro de costos y de alto desempeño, incluso si actualmente usted está más familiarizado(a) con las bases de datos de la competencia.

En este artículo le mostraré ejemplos de varios de los nuevos recursos de compatibilidad SQL que hay en DB2 9.7. Comenzaremos con los desencadenantes y con nuevos tipos de datos, pasaremos al soporte para Oracle SQL y PL/SQL, y cerraremos con una discusión sobre mejoras de objeto y de concurrencia. Hay algo para todos a medida que el DB2 "se torna compatible".

Para iniciar, conéctese a la ventana del Command Line Processor Plus (CLP Plus) (ver la Figura 1), reemplazando "db2admin" con las credenciales de inicio de sesión de su elección:
clpplus db2admin@localhost:50000/sample

Compatibilidad SQL

El primer paso en el uso de los recursos de compatibilidad SQL en DB2 9.7 es activar el parámetro DB2_COMPATIBILITY_VECTOR. Establecer db2set DB2_COMPATIBILITY_VECTOR=ORA activa los recursos de compatibilidad SQL relacionados con Oracle para toda la creación de bases de datos subsiguiente. Para una explicación de algunos de los parámetros más importantes utilizados por DB2_COMPATIBILITY_VECTOR, vea la Tabla 1.

Para activar este recurso, usted debe tener privilegios administrativos. Ingrese los siguientes comandos en la ventana de comandos del DB2:

db2set DB2_COMPATIBILITY_VECTOR=ORA
db2stop
db2start

Para crear una base de datos simple, ingrese: db2 create database [dbname]. Luego usted puede conectarse a la base de datos ingresando:
db2 connect to [dbname];

El siguiente paso es crear tablas usando tipos de datos Oracle. Ingrese el siguiente argumento CREATE TABLE utilizando la ventana CLP Plus o IBM Data Studio:
Create table employee (EMPNO NUMBER(5), ENAME VARCHAR2(50), DEPTNO NUMBER(5))

Figura 1: En DB2 9.7, la interfaz CLP Plus le permite ensayar los recursos de compatibilidad SQL.
Figura 1: En DB2 9.7, la interfaz CLP Plus le permite ensayar los recursos de compatibilidad SQL.

Recursos PL/SQL

Ahora exploraremos los recursos que le permiten crear procedimientos PL/SQL. El DB2 9.7 soporta lo siguiente:

  • Paquetes definidos por usuario
  • Procedimientos/funciones/bloques anónimos PL/SQL
  • Paquetes integrados (DBMS_OUT.PUT_LINE, DBMS_PIPE, DBMS_UTL, y demás)
  • Arrays asociativos (INDEX BY)
  • Varrays
  • Desencadenantes
  • %ROWTYPE
  • %TYPE
  • EXCEPTIONS
  • Ref-Cursors

Note que el soporte PL/SQL sólo está disponible para Enterprise Server Edition y Workgroup Edition del DB2 9.7 para LUW. PL/SQL no se soporta en DB2 Express-C, DB2 Express, ni en DB2 Personal Edition.


Procedimientos PL/SQL en DB2

DB2 soporta gran parte del lenguaje PL/SQL. Vamos a ver cómo funciona esto con algo de código de ejemplo. En cuanto se compila y ejecuta, este procedimiento PL/SQL muestra un mensaje de bienvenida al usuario. Para ver el resultado en la pantalla, emita primero el comando SET SERVEROUTPUT ON.

CREATE OR REPLACE PROCEDURE message_proc (myname varchar2)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Welcome to DB2 9.7 ( )! ' || myname
|| '. Now supports for ORACLE SQL and PL /SQL as well :-)!');
END message_proc;

Para llamar este procedimiento PL/SQL en DB2, emita los siguientes comandos:

EXEC proc_name
EXEC message_proc('Anil');

Este es un ejemplo que utiliza un bucle FOR:

BEGIN
FOR a IN 10 .. 20 LOOP
DBMS_OUTPUT.PUT_LINE('Counter ' || a);
END LOOP;
END;

Este bucle producirá el siguiente resultado:

Counter 10
Counter 20


El comando truncar tabla

Aquellos(as) de ustedes con experiencia en bases de datos Oracle probablemente han usado el comando TRUNCATE TABLE en algún momento de sus carreras. Ahora DB2 también soporta este comando. El siguiente código crea una tabla simple, le agrega una fila y luego usa el comando TRUNCATE para remover todas las filas de la tabla:

CREATE TABLE CLIENTS
(CLIENTID NUMBER(5) PRIMARY KEY NOT NULL,CLIENTNAME
VARCHAR2(50));

Inserte algunas filas:

INSERT INTO CLIENTS (CLIENTID, CLIENTNAME) VALUES (1,'IBM');
INSERT INTO CLIENTS VALUES (2,'MSFT');
INSERT INTO CLIENTS VALUES (3,'EDB');

Tabla 1: Valores DB2_COMPATIBILITY_VECTOR
Tabla 1: Valores DB2_COMPATIBILITY_VECTOR

Observemos las filas:

SELECT * FROM CLIENTS;

Ahora emita el siguiente comando para truncar estas filas:

TRUNCATE TABLE CLIENTS;

Vamos a comprobar que ya no están:

SELECT * FROM CLIENTS;

No obtendrá ninguna fila en pantalla.


Mejoras de objeto y de concurrencia

Me gustaría cerrar mencionando dos mejoras importantes en el DB2 9.7 que pueden ahorrarle tiempo y aumentar el desempeño: la validación en primer uso y un nuevo estado de bloqueo predeterminado.

Validación en primer uso
Cada vez que los objetos de la base de datos subyacente (tablas, vistas, procedimientos, funciones, y demás) se alteran, la siguiente vez que un objeto es recuperado con sus objetos dependientes, este se re-validará automáticamente. Esto definitivamente es un ahorrador de tiempo para los desarrolladores de aplicaciones. La verificación automática de dependencia se efectúa cada vez que un objeto es alterado.

Lectura de asignaciones actuales (predeterminado en DB2)
En releases anteriores de DB2, no era posible que un usuario intentase leer y otro intentase escribir en la misma fila, al mismo tiempo. Esto se basa en el principio de que los lectores esperan el resultado de las escrituras pendientes. El DB2 9.7 ahora utiliza el estado de bloqueo predeterminado, para que los lectores no tengan que esperar el resultado de una escritura pendiente. En lugar de ello, leerán la versión asignada actualmente de la fila. Así, los lectores no bloquearán a los escritores y los escritores no bloquearán a los lectores.

Estoy bastante impresionado con estos nuevos recursos de compatibilidad SQL. En este artículo no he podido profundizar mucho, así que les aliento a probar el DB2 9.7. ¡No se decepcionarán!


Recursos

Información general sobre IBM DB2Próximas tecnologías DB2

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Information mgmt
ArticleID=678648
ArticleTitle=Compatibilidad SQL en DB2 9.7
publish-date=06072011