Koenma's Laboratory




SQL inmerso en C/C++ (Parte IV)

11 de julio de 2007

Representación de Valores Nulos

Si los datos a recuperar de una base de datos pueden contener valores nulos, la sentencia SELECT singular debe proporcionar un mecanismo para que el Sistema Gestor de Base de Datos comunique los valores nulos al programa de aplicación.Para ello, el manejo de los valores nulos se realiza mediante la utilización de variables indicadoras en la cláusula INTO.

Cuando se especifica una variable principal en la cláusula INTO, puede ir seguida inmediatamente del nombre de una variable indicadora asociada. De esta forma, una vez ejecutada la sentencia SELECT, el valor de la variable indicadora informa al programa sobre cómo interpretar los datos devueltos:

  • Un valor indicador 0 significa que la variable principal se le ha asignado un valor determinado recuperado por el Sistema Gestor. El programa de aplicación puede utilizar el valor de la variable principal en su procesamiento.

  • Un valor indicador NEGATIVO significa que el valor recuperado fue NULL. El valor de la variable principal es irrelevante y no debe ser utilizado por el programa de aplicación.

  • Un valor indicador POSITIVO indica un aviso de algún tipo tal como un error de redondeo, el truncamiento de alguna cadena, etc.
Puesto que no se puede conocer anticipadamente cuando se va a recuperar un valor nulo, se debería de especificar siempre una variable indicadora en la cláusula INTO para cualquier columna de resultados de consulta que pueda contener un valor nulo.

Si la sentencia SELECT produce una columna que contiene un valor NULL y no se ha especificado una variable indicadora para la columna, el SGBD tratará la sentencia como un error y devolverá un valor negativo para SQLCODE.

Las variables indicadores deben pues ser utilizadas para recuperar con éxito filas que pudieran contener valores NULL.

Manipulación de datos sin usar cursores

En este apartado, se tratan las diferentes manipulaciones de datos sin el empleo de cursores:
  • La operación de consulta se realiza con la siguiente variante de la sentencia SELECT del lenguaje de SQL interactivo:

      EXEC SQL SELECT [ALL | DISTINCT] (lista_elemento_selección) INTO (lista_variables_huéspedes)
      FROM (lista_relación)
      WHERE (condición_búsqueda)
      [GROUP BY (lista_atributo)]
      [HAVING (condición_búsqueda)]

      Bajo este contexto, la sentencia SELECT debe devolver una única tupla. En caso contrario,se producirá un error.
La única variante de la sentencia consiste en que la cláusula INTO especifica la lista de variables del programa que serán utilizadas para recibir los datos seleccionados (tal como habíamos visto en el ejemplo anterior con las variables indicadoras).

Los elementos de las lista de selección y de la lista de variables se corresponden uno a uno en el orden en que aparecen, por ello ambas listas deben tener el mismo número de elementos y ser de tipos de datos compatibles (esto depende de la implementación del SQL que se esté utilizando).

Las operaciones de actualización tienen la misma sintaxis que en el SQL interactivo con la única diferencia que se pueden incluir variables huéspedes. Por ejemplo:

    EXEC SQL UPDATE (nombre_tabla)
    SET (atributo) = :(variable_huesped)
    WHERE (condición)

Etiquetas:

 
Posteado por Koenma a las 10:04, |                  Ir al Inicio | Ir Arriba

0 Comentario(s):


Publicar un comentario