Partilhar via


Argumentos do identificador

Se uma cadeia de caracteres num argumento identificador for citada, o driver remove os espaços em branco de entrada e final e trata literalmente a cadeia dentro das aspas. Se a string não estiver entre aspas, o driver remove os espaços em branco finais e converte a string para maiúsculas. Definir um argumento de identificador para um ponteiro nulo devolve SQL_ERROR e SQLSTATE HY009 (Uso inválido do ponteiro nulo), a menos que o argumento seja um nome de catálogo e os catálogos não sejam suportados.

Estes argumentos são tratados como argumentos identificadores se o atributo SQL_ATTR_METADATA_ID da instrução estiver definido como SQL_TRUE. Neste caso, o sublinhado (_) e o sinal percentual (%) serão tratados como o carácter real, e não como um carácter de padrão de pesquisa. Estes argumentos são tratados como um argumento comum ou um argumento de padrão, dependendo do argumento, se este atributo estiver definido como SQL_FALSE.

Embora identificadores contendo caracteres especiais devam ser citados nas instruções SQL, não devem ser citados 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 carácter de aspas do identificador (que é específico do driver e devolvido através do SQLGetInfo) são aspas duplas ("). A primeira chamada ao SQLTables devolve um conjunto de resultados contendo informações sobre a tabela de Contas a Pagar, enquanto a segunda chamada devolve informações sobre a tabela "Contas a Pagar", o que provavelmente não era 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);  

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

Para mais informações sobre identificadores citados, consulte Identificadores Citados.