Partilhar via


Argumentos do identificador

Se uma cadeia de caracteres em um argumento de identificador estiver entre aspas, o driver removerá espaços em branco à esquerda e à direita e tratará literalmente a cadeia de caracteres entre aspas. Se a cadeia de caracteres não estiver entre aspas, o driver removerá os espaços em branco à direita e converterá a cadeia em maiúsculas. A definição de 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 devam estar entre aspas em instruções SQL, eles não devem estar entre aspas quando passados como argumentos de função de catálogo, porque os caracteres de aspas passados para funções de catálogo são interpretados literalmente. Por exemplo, suponha que o caractere de aspas 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 contendo 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 pretendido.

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

Os identificadores entre aspas são usados para distinguir um nome de coluna verdadeira de uma pseudocoluna 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 pseudocoluna ROWID, se ela existir. Se a pseudocoluna 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, confira Identificadores entre aspas.