Compartir vía


Argumentos de identificador

Si se entrecomilla una cadena en un argumento de identificador, el controlador quita los espacios en blanco iniciales y finales y trata literalmente la cadena entre comillas. Si la cadena no está entre comillas, el controlador quita los espacios en blanco finales y pliega la cadena en mayúsculas. Establecer un argumento de identificador en un puntero nulo devuelve SQL_ERROR y SQLSTATE HY009 (uso no válido del puntero nulo), a menos que el argumento sea un nombre de catálogo y catálogos que no se admitan.

Estos argumentos se tratan como argumentos de identificador si el atributo de instrucción SQL_ATTR_METADATA_ID está establecido en SQL_TRUE. En este caso, el carácter de subrayado (_) y el signo de porcentaje (%) se tratarán como el carácter real, no como un carácter de patrón de búsqueda. Estos argumentos se tratan como un argumento normal o un argumento de patrón, según el argumento, si este atributo se establece en SQL_FALSE.

Aunque los identificadores que contienen caracteres especiales deben estar entrecomillados en instrucciones SQL, no deben entrecomillarse cuando se pasan como argumentos de función de catálogo, ya que los caracteres de comillas pasados a las funciones de catálogo se interpretan literalmente. Por ejemplo, supongamos que el carácter de comilla del identificador (que es específico del controlador y que se devuelve a través de SQLGetInfo) es una comilla doble ("). La primera llamada a SQLTables devuelve un conjunto de resultados que contiene información sobre la tabla Proveedores, mientras que la segunda llamada devuelve información sobre la tabla "Proveedores", que probablemente no sea la intención.

SQLTables(hstmt1, NULL, 0, NULL, 0, "Accounts Payable", SQL_NTS, NULL, 0);  
SQLTables(hstmt2, NULL, 0, NULL, 0, "\"Accounts Payable\"", SQL_NTS, NULL, 0);  

Los identificadores entre comillas se usan para distinguir un nombre de columna verdadero de una pseudo-columna del mismo nombre, como ROWID en Oracle. Si se pasa "ROWID" en un argumento de una función de catálogo, la función funcionará con la pseudo-columna ROWID si existe. Si la pseudo-columna no existe, la función funcionará con la columna "ROWID". Si ROWID se pasa en un argumento de una función de catálogo, la función funcionará con la columna ROWID.

Para más información sobre los identificadores entre comillas, consulte Identificadores entre comillas.