Interfaces de nivel de llamada
La técnica final para enviar instrucciones SQL al DBMS es a través de una interfaz de nivel de llamada (CLI). Una interfaz de nivel de llamada proporciona una biblioteca de funciones de DBMS a las que puede llamar el programa de aplicación. Por lo tanto, en lugar de intentar combinar SQL con otro lenguaje de programación, una interfaz de nivel de llamada es similar a las bibliotecas rutinarias que la mayoría de los programadores están acostumbrados a usar, como la cadena, la E/S o las bibliotecas matemáticas en C. Tenga en cuenta que DBMS que admite SQL insertado ya tiene una interfaz de nivel de llamada, las llamadas a las que genera el precompilador. Sin embargo, estas llamadas no están documentadas y están sujetas a cambios sin previo aviso.
Las interfaces de nivel de llamada se usan normalmente en arquitecturas de cliente o servidor, en las que el programa de aplicación (el cliente) reside en un equipo y el DBMS (el servidor) reside en otro equipo. La aplicación llama a las funciones de la CLI en el sistema local y esas llamadas se envían a través de la red a DBMS para su procesamiento.
Una interfaz de nivel de llamada es similar a SQL dinámico, en que las instrucciones SQL se pasan al DBMS para su procesamiento en tiempo de ejecución, pero difiere de SQL insertada como un todo en que no hay instrucciones SQL incrustadas y no se requiere ningún precompilador.
El uso de una interfaz de nivel de llamada suele implicar los pasos siguientes:
La aplicación llama a una función de la CLI para conectarse a DBMS.
La aplicación compila una instrucción SQL y la coloca en un búfer. A continuación, llama a una o varias funciones de la CLI para enviar la instrucción a DBMS para su preparación y ejecución.
Si la instrucción es una instrucción SELECT, la aplicación llama a una función de la CLI para devolver los resultados en los búferes de la aplicación. Normalmente, esta función devuelve una fila o una columna de datos a la vez.
La aplicación llama a una función de la CLI para desconectar de DBMS.