Koenma's Laboratory




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

11 de julio de 2007

Variables Huéspedes

Las sentencias SQL pueden incluir referencias a variables huéspedes (o variables anfitrión) mediante la adición de un prefijo de dos puntos a las mismas con el fin de distinguirlas de los nombres de columnas de SQL, ya que ambas pueden tener el mismo nombre. Ejemplo:
    #define USER username
    EXEC SQL CONNECT :USER IDENTIFIED BY :password;
La declaración de las variables huéspedes se realiza dentro del bloque o sección de declaración de SQL incrustado. El tipo de datos de estas variables deben adaptarse al uso final para el que se encuentren declaradas.

Estas variables se emplean para comunicar las sentencias de SQL con las del lenguaje C. Una variable huésped puede ser de cualquier tipo de dato básico de C, además de tipo VARCHAR (importado de SQL). Puede ser también un array de caracteres (cadena de caracteres).

No obstante, so se soportan arrays multidimensionales, salvo que sean arrays de cadena de caracteres, que se interpretan como tal. En las sentencias de SQL deben de aparecer con un prefijo de dos puntos delante de su identificador. Por ejemplo:
    int x
    EXEC SQL SELECT *
    FROM TABLA
    WHERE (CAMPO = :x);

    El uso de punteros también está permitido.
En el caso de los arrays, tras realizar una inserción en una tabla determinada, el tamaño ‘n’ de un array, hará que en la sentencia de SQL, se inserten ‘n’ t-uplas y cada una tenga el contenido de cada casilla de ese mismo array. Es decir, los arrays se tratan como si de una tabla se tratase y se insertarán todas las t-uplas a la vez.

Las estructuras también se pueden utilizar como variables en los campos de una instrucción de SQL. Su uso conviene para agrupar filas de una tabla, siempre que tengan la misma estructura. Por ejemplo:
    struct fila {
      int campo1;
      char campo2[10];

    }

    Hacemos ejecución de la sentencia
    EXEC SQL INSERT INTO TABLA1 VALUES (:fila);
Con esto, insertamos en la tabla TABLA1 los valores correspondientes de la estructura ‘fila’cuyo tipo de dato de los campos contenidos en ella, sean iguales que los campos de la tabla TABLA1 (CAMPO1 VARCHAR(10) y CAMPO2 NUMBER).

Etiquetas:

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

0 Comentario(s):


Publicar un comentario