Compartilhar via


Argumentos do identificador

Se uma cadeia de caracteres em um argumento de identificador for citada, o driver removerá espaços em branco à esquerda e à direita e tratará literalmente a cadeia de caracteres dentro das aspas. Se a cadeia de caracteres não estiver entre aspas, o driver removerá espaços em branco à direita e converterá a cadeia de caracteres para maiúsculas. Definir um argumento identificador para um ponteiro nulo retorna SQL_ERROR e SQLSTATE HY009 (uso inválido de ponteiro nulo), a menos que o argumento seja um nome de catálogo e não haja suporte para catálogos.

Esses argumentos serão tratados como argumentos de identificador se o atributo de instrução SQL_ATTR_METADATA_ID estiver definido como SQL_TRUE. Nesse caso, o sublinhado (_) e o sinal de porcentagem (%) serão tratados como o caractere real, não como um caractere de padrão de pesquisa. Esses argumentos são tratados como um argumento comum ou um argumento padrão, dependendo do argumento, se esse atributo for definido como SQL_FALSE.

Embora os identificadores que contêm caracteres especiais precisem ser citados em instruções SQL, eles não devem ser citados quando passados como argumentos de função de catálogo, pois os caracteres de aspas passados para funções de catálogo são interpretados literalmente. Por exemplo, suponha que o caractere de aspa do identificador (que é específico do driver e retornado por meio de SQLGetInfo) seja uma aspa dupla ("). A primeira chamada para SQLTables retorna um conjunto de resultados que contém informações sobre a tabela Contas A pagar, enquanto a segunda chamada retorna informações sobre a tabela "Contas a Pagar", que provavelmente não é o que se pretendia.

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

Identificadores entre aspas são usados para distinguir um nome de coluna verdadeiro de uma pseudo-coluna de mesmo nome, como ROWID no Oracle. Se "ROWID" for passado em um argumento de uma função de catálogo, a função funcionará com a pseudo-coluna ROWID se existir. Se a pseudo-coluna não existir, a função funcionará com a coluna "ROWID". Se ROWID for passado em um argumento de uma função de catálogo, a função funcionará com a coluna ROWID.

Para obter mais informações sobre identificadores entre aspas, consulte Identificadores Entre Aspas.