You are on page 1of 7

SQL EN MODO PROGRAMACION

SQL (Standar Query Lenguaje) es un lenguaje estandarizado de base de datos, el cual nos permite realizar
tablas y obtener datos de ella de manera muy sencilla. Para exponer mas claramente los conceptos se
realizaran ejemplo sobre relaciones que se crearan aqu para entender mejor como funciona SQL.
Cuando aqu nos refiramos a relacin estamos hablando mas concretamente a la tabla de datos en si, y sus
atributos sern los campos de la tabla. Como ejemplo la siguiente relacin ( tabla ) la llamaremos persona y
sus atributos ( campos ) son nombre, apellido Y DNI

PERSONA

NOMBRE

APELLIDO

DNI

MARTIN

MARQUESI

26125988

PABLO

MARQUESI

25485699

ROBERTO

SANCHEZ

20566401

ESTEFANIA

GUISSINI

27128064

RUBEN

ALEGRATO

24238975

SANDRA

BRITTE

25483669

MELISA

ARDUL

27456224

SOLEDAD

MICHELLI

29889656

BETANIA

MUSACHEGUI

27128765

10

JUAN

SERRAT

28978845

SQL es un lenguaje que consta de varias partes


Lenguaje de definicin de datos ( DDL): Proporciona ordenes para definir esquemas de relacin,
eliminar relaciones, crear ndices y modificar esquemas de relacin.
Lenguaje de manipulacin de datos interactivos (DML): incluye un leguaje de consultas que permite
rescatar datos de las relaciones. Tambin incluye ordenes para insertar, suprimir y modificar tuplas.
Lenguaje de manipulacin de datos inmerso (DML): La forma inmersa de SQL esta diseada para
usar dentro de los lenguajes de programacin de lenguaje general.
Definicin de vistas (DDL): incluye ordenes para definir vistas.

EL REGISTRO SQLCA

Una SQLCA es un conjunto de variables que se actualiza al final de la ejecucin de cada sentencia de
SQL. Un programa que contiene sentencias de SQL ejecutables y se precompila con la opcin
LANGLEVEL SAA1 (el valor por omisin) o MIA debe proporcionar exactamente una SQLCA, aunque es
posible que exista ms de una SQLCA por paso en una aplicacin de mltiples pasos.
Cuando se precompila un programa con la opcin LANGLEVEL SQL92E, puede declararse una variable
SQLCODE o SQLSTATE en la seccin de declaracin SQL o se puede declarar una variable SQLCODE
en algn otro lugar del programa.
No se debe proporcionar ninguna SQLCA cuando se utiliza LANGLEVEL SQL92E. La sentencia de SQL
INCLUDE puede utilizarse para proporcionar la declaracin de la SQLCA en todos los lenguajes excepto
en REXX. La SQLCA se proporciona automticamente en REXX.
Para visualizar la SQLCA despus de cada mandato ejecutado a travs del procesador de lnea de
mandatos, utilice el mandato db2 -a. La SQLCA se proporciona como parte de la salida para los

mandatos posteriores. La SQLCA tambin se vuelca en el archivo de anotaciones


cronolgicas db2diag.
CONTROL POR DEFECTO DE LOS ERRORES EN TIEMPO DE EJECUCION

Los errores en tiempo de ejecucin se producen despus de que comienza la ejecucin


de la aplicacin. Entre las acciones que podran generar errores en tiempo de ejecucin
se encuentran la escritura en un archivo que no existe, el intento de abrir una tabla
que ya est abierta, el intento de seleccionar una tabla que se ha cerrado, la presencia
de un conflicto de datos, la divisin de un valor entre cero, etc.
A veces surgen errores cuando los usuarios ejecutan su aplicacin. Puede llamar a su
propia rutina de tratamiento de errores incluyendo ON ERROR. Normalmente, ON
ERROR utiliza un comando DO para ejecutar una rutina que controla el error, como en
este ejemplo:
ON ERROR DO My_Error

Si su aplicacin no contiene ninguna rutina de tratamiento de errores y se produce un


error, la aplicacin se interrumpir y Visual FoxPro presentar un mensaje de error con
las siguientes opciones:

Cancelar Si el usuario elige "Cancelar", Visual FoxPro detendr


inmediatamente la ejecucin de la aplicacin y devolver el control al sistema.

Ignorar Si el usuario elige "Ignorar", Visual FoxPro pasar por alto la lnea que
origin el error y continuar con la lnea siguiente del programa.
CODIGO DE ERRORES

los cdigos de error son mensajes numerados que corresponden a errores en


una aplicacin especfica. Se usan a menudo para identificar fallos
de hardware, software o una entrada de datos incorrecta del usuario, en lenguajes de
programacin que carecen de manejo de excepciones, aunque a veces se usan
conjuntamente a ellas. Los cdigos de error no deben confundirse con los valores de
retorno, aunque ambos se usen conjuntamente en el manejo de errores. Algunos de
los cdigos de error ms severos visibles al usuario son los cdigos de error en
la pantalla azul de la muerte de Windows.
los cdigos de error suelen almacenarse en variables globalescon nombres como errno .
Los cdigos de error se identifican por un nmero, indicando cada uno un motivo de fallo. En
una aplicacin que use cdigos de error, cada funcin suele tener un valor de retorno que
indica que se produjo un fallo. A continuacin se puede comprobar el valor disponible en la
variable global para determinar el motivo que hizo fallar a la funcin. Por ejemplo, para indicar
que fall la apertura de un archivo, una funcin suele establecer la variable global al cdigo de

error indicando el motivo del fallo y devolver un manipulador de fichero no vlido, tal y como
muestra el siguiente ejemplo:

/* intentamos abrir ''archivo'' para lectura*/


FILE *pFichero = fopen("archivo", "r"); /* if file cannot be opened,
print error number and error string */
if(pFichero == NULL)
printf("No se puede abrir el archivo, error n %i, descripcin: %s\n",
errno, strerror(errno));

ACTUALIZACION DE LA TABLA CON CURSOR Y SIN CURSOR DE


INSERCION DE DATOS MODIFICACION Y BORRADO

Los atributos de los cursores implcitos que se crean son los siguientes:

SQL%NOTFOUND: nos dice si el ltimo insert, update,delete o select into no han


afectado a ninguna fila.

SQL%FOUND: nos dice si el ltimo insert, update,delete o select into ha afectado a


una o mas filas

SQL%ROWCOUNT: devuelve el nmero de filas afectadas por el ltimo insert, update,


delete o select into

SQL%ISOPEN: Nos dice si el cursor esta cerrado, por lo que en teora siempre nos
dar falso ya que Oracle cierra automticamente el cursor despus de cada orden SQL.

Es importante tener en cuenta una serie de cosas:


Si se trata de un select into tenemos que tener en cuenta que solo puede devolver
una nica fila de lo contrario nos levantar automticamente una de estas dos
excepciones:
NO_DATA_FOUND: si la consulta no devuelve ninguna fila
TOO_MANY_ROWS: si la consulta devuelve ms de una fila
Cuando un select into hace referencia a una funcin de grupo nuca se levantar la
excepcin NO_DATA_FOUND y SQL%FOUND siempre ser verdadero. Esto se explica

porque las funciones de grupo siempre devuelven algn valor (NULL se considera un
valor).

Uso de cursores para actualizar filas


Para realizar una actualizacin con un cursor tenemos que aadir la siguiente FOR
UPDATE al final de la declaracin del cursor:
CURSOR nombre_cursor <declaraciones> FOR UPDATE

Esto indica que las filas seleccionadas por el cursor van a ser actualizadas o borradas. Una
vez declarado un cursor FOR UPDATE, se incluir el especificador CURRENT OF
nombre_cursor en la clusula WHERE para actualizar o borrar la ltima fila recuperada
mediante la orden FETCH.
{UPDATE|DELETE}... WHERE CURRENT OF nombre_cursor.

Os pongo un ejemplo para que quede claro:


Subir el salario a todos los empleados del departamento indicado en la llamada. El
porcentaje se indicar tambin en la llamada.
CREATE OR REPLACE PROCEDURE subir_salario (num_dept NUMBER, incre NUMBER)
IS
CURSOR c IS SELECT oficio, salario FROM empleados WHERE
cod_dept=num_dept
FOR UPDATE;
reg c%ROWTYPE;
inc NUMBER (8);
BEGIN
OPEN c;
FETCH c INTO reg;
WHILE c%FOUND LOOP
inc :=(reg.salario/100 )* inc;
UPDATE empleados SET salario=salario+inc WHERE CURRENT
OF c

FETCH c INTO reg;


END LOOP;
END;

Tambin podemos usar ROWID en lugar de FOR UPDATE. ROWID nos indicar la fila
que se va a actualizar. Para ello, al declarar el cursor en la clusula SELECT indicaremos
que seleccione tambin el identificador de fila:
CURSOR nombre_cursor IS SELECT columna1,columna2,...ROWID FROM tabla;

Al ejecutarse el FETCH se guardar el nmero de fila en una variable y despus ese


nmero se podr usar en la clusula WHERE de la actualizacin:
{UPDATE |DELETE } ... WHERE ROWID = variable_rowid

El ejemplo anterior utilizando ROWID quedara de la siguiente manera:


CREATE OR REPLACE PROCEDURE subir_salario (num_dept NUMBER, incre NUMBER)
IS
CURSOR c IS SELECT oficio, salario,ROWID FROM empleados WHERE
cod_dept=num_dept
FOR UPDATE;
reg c%ROWTYPE;
inc NUMBER (8);
BEGIN
OPEN c;
FETCH c INTO reg;
WHILE c%FOUND LOOP
inc :=(reg.salario/100 )* inc;
UPDATE empleados SET salario=salario+inc WHERE ROWID =
reg.ROWID;
FETCH c INTO reg;
END LOOP;
END;
SQL EMBEBIDO EN LENGUAJE DE TERCERA GENERACION

lenguajes de programacin de tercera generacin son la gama de lenguajes de


programacin para mbitos computacionales donde se logra un alto rendimiento con respecto
a lenguajes de generaciones anteriores.
Dichos lenguajes son utilizados por especialistas, programadores, y otros para desarrollar
programas y sistemas que requieren de un procedimiento especfico para la computadora.
Entre ellos se encuentran C, Fortran, Smalltalk, Ada, C++, C#, Cobol, Delphi, Java, PHP, etc.
Tambin se considera la existencia de lenguajes de programacin de primera, segunda, y
cuarta generacin.

Segunda generacin
Lenguaje de programacin de segunda generacin se refiere al lenguaje ensamblador
ensamblado a travs de un macroensamblador. Es el lenguaje de mquina combinado con
una serie de poderosas macros que permiten declarar estructuras de datos y de control
complejas.

Cuarta generacin
Los lenguajes de programacin de cuarta generacin son los lenguajes en los cuales, en lugar
de escribir cmo deben obtenerse los resultados, se especifica cuales son los resultados que
se quieren obtener. Por ejemplo, los lenguajes de consulta de base de datos (como el SQL)
son considerados lenguajes de cuarta generacin
DEFINICION DE TABLA Y VARIABLE HUESPEDES
Las variables y los parmetros resultan tiles cuando tienen valores que cambian en funcin de las
secuencias de trabajos y los trabajos. Las definiciones de secuencias de trabajos, trabajos y solicitudes
que las utilizan se actualizan de forma automtica al inicio del ciclo de produccin.
Utilice las variables y parmetros como sustitutos de los valores repetitivos cuando defina solicitudes,
trabajos y secuencias de trabajos. Por ejemplo, el uso de parmetros para los nombres de archivos de
scripts y el inicio de sesin de usuario en las definiciones de trabajo y para las dependencias de
archivos y solicitudes permite utilizar valores que se pueden mantener centralmente en la base de datos
del maestro.
Mientras que las variables son objetos de planificacin que se definen en la base de datos de Tivoli
Workload Scheduler y que pueden utilizar los usuarios autorizados del dominio, los parmetros se
definen y utilizan localmente en los agentes individuales.
Los apartados siguientes describen detalladamente las variables y los parmetros.

Variables
Las variables se definen como objetos de planificacin en la base de datos. Las variables se pueden
definir individualmente con el mandato siguiente:
$parm
[nombretabla.]nombrevariable valorvariable
...
donde:
nombretabla
Es el nombre de la tabla de variables que ha de contener la nueva variable. La tabla de
variables ya debe estar definida. Si no especifica un nombre de tabla de variables, se aade la
variable a la tabla predeterminada.
nombrevariable
Es el nombre de la variable. El nombre puede contener un mximo de 16 caracteres
alfanumricos, incluidos guiones (-) y caracteres de subrayado (_) y debe comenzar por una
letra.
valor
Es el valor asignado a la variable. No incluya los nombres de otras variables.