Share via


Parámetros de la instrucción

Un parámetro es una variable en una instrucción SQL. Por ejemplo, supongamos que una tabla Parts tiene columnas denominadas PartID, Description y Price. Para agregar una parte sin parámetros sería necesario la construcción de una instrucción SQL como:

INSERT INTO Parts (PartID, Description, Price) VALUES (2100, 'Drive shaft', 50.00)  

Aunque esta instrucción inserta un nuevo pedido, no es una buena solución para una aplicación de entrada de pedido porque los valores que se van a insertar no se pueden codificar de forma rígida en la aplicación. Una alternativa consiste en construir la instrucción SQL en tiempo de ejecución mediante los valores que se van a insertar. Esto tampoco es una buena solución, debido a la complejidad de la construcción de instrucciones en tiempo de ejecución. La mejor solución es reemplazar los elementos de la cláusula VALUES por signos de interrogación (?) o marcadores de parámetros:

INSERT INTO Parts (PartID, Description, Price) VALUES (?, ?, ?)  

Los marcadores de parámetros se enlazan a variables de aplicación. Para agregar una nueva fila, la aplicación únicamente tiene que establecer los valores de las variables y ejecutar la instrucción. Después, el controlador recupera los valores actuales de las variables y los envía al origen de datos. Si se ejecuta la instrucción varias veces, la aplicación puede hacer que el proceso mejore al preparar la instrucción.

La instrucción que se acaba de mostrar podría estar codificada de forma rígida en una aplicación de entrada de pedido para insertar una nueva fila. Sin embargo, los marcadores de parámetro no se limitan a las aplicaciones verticales. Para cualquier aplicación, facilitan la dificultad de construir instrucciones SQL en tiempo de ejecución evitando conversiones hacia y desde texto. Por ejemplo, el identificador de elemento que acaba de mostrar se almacena en la aplicación como un entero. Si la instrucción SQL se construye sin marcadores de parámetros, la aplicación debe convertir el identificador de elemento en texto y el origen de datos debe volver a convertirlo en un entero. Mediante el uso de un marcador de parámetros, la aplicación puede enviar el identificador de elemento al controlador como un entero, que normalmente puede enviarlo al origen de datos como un entero. Esto guarda dos conversiones. Para los valores de datos largos, esto es muy importante, ya que las formas de texto de estos valores suelen superar la longitud permitida de una instrucción SQL.

Los parámetros solo son válidos en determinados lugares de las instrucciones SQL. Por ejemplo, no se permiten en la lista de selección (la lista de columnas que va a devolver una instrucción SELECT ), ni se permiten como ambos operandos de un operador binario, como el signo igual (=), porque sería imposible determinar el tipo de parámetro. Por lo general, los parámetros solo son válidos en instrucciones DML (Lenguaje de manipulación de datos) y no en instrucciones del Lenguaje de definición de datos (DDL). Para obtener más información, vea Marcadores de parámetros en el apéndice C: Gramática de SQL.

Cuando la instrucción SQL invoca un procedimiento, se pueden usar parámetros con nombre. Los parámetros con nombre se identifican por sus nombres, no por su posición en la instrucción SQL. Se pueden enlazar mediante una llamada a SQLBindParameter, pero el parámetro se identifica mediante el campo SQL_DESC_NAME del IPD (descriptor de parámetros de implementación), no por el argumento ParameterNumber de SQLBindParameter. También se pueden enlazar llamando a SQLSetDescField o SQLSetDescRec. Para obtener más información sobre los parámetros con nombre, vea Parámetros de enlace por nombre (Parámetros con nombre), más adelante en esta sección. Para obtener más información sobre los descriptores, vea Descriptores.

Esta sección contiene los temas siguientes.