Como utilizar sql incrustado

Video: 1.Consultas SQL (Select, Where, group by, having, order by, join)

El método más común de mezcla de SQL con lenguas de procedimiento se llama incrustado SQL. Se pregunta cómo SQL incorporado funciona? Tome una mirada en el nombre y usted tiene los fundamentos abajo: Caída de las sentencias SQL en el medio de un programa de procedimiento, donde los necesite.

Por supuesto, como se puede esperar, una instrucción SQL que aparece de repente en medio de un programa en C puede presentar un reto para un compilador que no se lo esperaba. Por esa razón, los programas que contienen SQL incorporado usualmente se transmiten a través de una preprocesador antes de ser compilado o interpretado. los EXEC SQL Directiva advierte que el preprocesador de la inminente aparición de código SQL.

A modo de ejemplo de SQL incorporado, mirar un programa escrito en Pro versión de Oracle * C del lenguaje C. El programa, que accede a una empresa de EMPLEADO mesa, solicita al usuario un nombre de empleado y luego muestra salario y la comisión de ese empleado. A continuación, pide al usuario la nueva salarios o los datos de comisión - y actualiza la tabla de empleados con ella:

EXEC SQL BEGIN DECLARE SECTION-VARCHAR uid [20] -VARCHAR pwd [20] -VARCHAR ename [10] salario -FLOAT, salary_ind comm-SHORT, comm_ind-EXEC SQL END DECLARE SECTION-main () {int sret- / * scanf código de retorno * // * Iniciar sesión * / strcpy (uid.arr,"FRED") - / * copiar el nombre de usuario * / uid.len = strlen (uid.arr) -strcpy (pwd.arr,"TORRE") - / * copiar la contraseña * / pwd.len = strlen (pwd.arr) SQL -exec SIEMPRE SQL SQLERROR STOP-EXEC SIEMPRE QUE NO ENCONTRADO STOP-EXEC SQL CONNECT: uid-printf ("Conectado con el usuario: El por ciento n", Uid.arr) -printf ("Introduzca el nombre del empleado para actualizar: ") -scanf ("porcentajes", Ename.arr) -ename.len = strlen (ename.arr) SALARIO -exec SQL SELECT, COMM INTO: salario,: ​​commFROM EMPLOYWHERE ENAME =: ename-printf ("Empleado: El por ciento de salario: percent6.2f comm: percent6.2f n", Ename.arr, salario, comm) -printf ("Introduzca nuevo salario: ") -sret = scanf ("percentf",&salario) -salary_ind = 0, si (== EOF SRET !! SRET == 0) / * conjunto de indicadores * / salary_ind = -1- / * Establecer indicador de NULL * / printf ( “Introduzca nueva comisión:“) -sret = scanf ("percentf",&comm) -comm_ind = 0- / * indicador de conjunto * / if (SRET == EOF !! SRET == 0) comm_ind = -1- / * conjunto de indicadores para NULL * / EXEC SQL ACTUALIZACIÓN EMPLOYSET SALARIO =: salario: salary_indSET COMM =: comm: comm_indWHERE ENAME =: ename-printf ("por ciento de los empleados actualizados. norte", Ename.arr) -exec SQL COMMIT WORK-salida (0) -}

Usted no tiene que ser un experto en C para entender la esencia de lo que este programa está haciendo (y cómo se propone hacerlo). He aquí un resumen de la orden en el que las sentencias se ejecutan:

  1. SQL declara variables del lenguaje principal.

  2. código C controla el procedimiento de inicio de sesión de usuario.

  3. SQL establece el control de errores y se conecta a la base de datos.

  4. código C solicita un nombre de empleado del usuario y lo coloca en una variable.

  5. un SQL SELECCIONAR instrucción recupera los datos para el salario y la comisión del empleado llamado, y la declaración almacena los datos en las variables del sistema principal :salario y : comm.

    Video: Curso SQL Server - 22. Cláusula HAVING | UskoKruM2010

  6. C, entonces se hace cargo de una y otra muestra del empleado nombre, salario y la comisión y luego solicita nuevos valores de salario y la comisión. También comprueba para ver si una entrada se ha hecho, y si uno no tiene, se establece un indicador.

  7. SQL actualiza la base de datos con los nuevos valores.

  8. C a continuación, muestra una operación completa mensaje.

  9. SQL confirma la transacción, y C, finalmente, sale del programa.

Usted puede mezclar las órdenes de dos idiomas así por el preprocesador. El preprocesador separa las sentencias SQL de los comandos de lenguaje principal, la colocación de las sentencias SQL en una rutina externa independiente. Cada instrucción SQL se sustituye con una lengua de acogida LLAMADA de la rutina externo correspondiente. El compilador de lenguaje puede ahora hacer su trabajo.

La forma en la parte de SQL se pasa a la base de datos depende de la implementación. Usted, como el desarrollador de la aplicación, no tiene que preocuparse por nada de esto. El preprocesador se encarga de ello. Tú debería estar preocupado por algunas cosas, sin embargo, que no aparecen en SQL interactivo - cosas como variables de sistema principal y tipos de datos incompatibles.

variables del sistema principal

Parte de la información debe ser transmitida entre el programa de lengua de acogida y los segmentos de SQL. Se pasa estos datos con variables del lenguaje. Con el fin de SQL para reconocer las variables de sistema principal, debe declarar antes de usarlos. Las declaraciones se incluyen en un segmento de la declaración que precede al segmento de programa. El segmento de declaración se anunció por la siguiente directiva:

EXEC SQL BEGIN DECLARE SECTION -

El extremo del segmento de declaración se señaliza por esta línea:

EXEC SQL END DECLARE SECTION -

Cada sentencia SQL debe ser precedida por una EXEC Directiva SQL. El final de un segmento de SQL puede o no puede ser señalado por una directiva terminador. En COBOL, la directiva es terminador “END-EXEC”, y en C, que es un punto y coma.

Convertir tipos de datos

Dependiendo de la compatibilidad de los tipos de datos soportados por la lengua de acogida y las apoyadas por SQL, puede que tenga que utilizar EMITIR para convertir ciertos tipos. Se pueden utilizar variables huésped que han sido declaradas en la Sección declare. Recuerde prefijo nombres de variables anfitrión con dos puntos (:) Cuando se utilizan en las instrucciones SQL, como en el siguiente ejemplo:

INSERT INTO ALIMENTOS (FOODNAME, calorías, proteínas, grasas, carbohidratos) VALORES (: foodname,: calorías,: proteínas, gordo,: carbo) -
Artículos Relacionados