Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um aplicativo pode especificar as características de um cursor em vez de especificar o tipo de cursor (somente avanço, estático, orientado por conjunto de teclas ou dinâmico). Para fazer isso, o aplicativo seleciona a rolabilidade do cursor (definindo o atributo de instrução SQL_ATTR_CURSOR_SCROLLABLE) e a sensibilidade (definindo o atributo de instrução SQL_ATTR_CURSOR_SENSITIVITY) antes de abrir o cursor no identificador de instrução. Em seguida, o driver escolhe o tipo de cursor que fornece com mais eficiência as características solicitadas pelo aplicativo.
Sempre que um aplicativo define qualquer um dos atributos de instrução SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_SCROLLABLE, SQL_ATTR_CURSOR_SENSITIVITY ou SQL_ATTR_CURSOR_TYPE, o driver faz qualquer alteração necessária nos outros atributos de instrução nesse conjunto de quatro atributos para que seus valores permaneçam consistentes. Como resultado, quando o aplicativo especifica uma característica de cursor, o driver pode alterar o atributo que indica o tipo de cursor com base nessa seleção implícita; quando o aplicativo especifica um tipo, o driver pode alterar qualquer um dos outros atributos para ser consistente com as características do tipo selecionado. Para obter mais informações sobre esses atributos de instrução, consulte a descrição da função SQLSetStmtAttr.
Um aplicativo que define atributos de instrução para especificar um tipo de cursor e características de cursor corre o risco de obter um cursor que não é o método mais eficiente disponível nesse driver para atender aos requisitos do aplicativo.
A configuração implícita de atributos de instrução é definida pelo driver, exceto que deve seguir estas regras:
Os cursores de somente avanço nunca são roláveis; consulte a definição de SQL_ATTR_CURSOR_SCROLLABLE em SQLSetStmtAttr.
Cursores insensíveis nunca são atualizáveis (e, portanto, sua simultaneidade é somente leitura); isso é baseado em sua definição de cursores insensíveis no padrão ISO SQL.
Consequentemente, a configuração implícita de atributos de instrução ocorre nos casos descritos na tabela a seguir.
O aplicativo define o atributo para | Outros atributos definidos implicitamente |
---|---|
SQL_ATTR_CONCURRENCY para SQL_CONCUR_READ_ONLY | SQL_ATTR_CURSOR_SENSITIVITY para SQL_INSENSITIVE. |
SQL_ATTR_CONCURRENCY para SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER ou SQL_CONCUR_VALUES | SQL_ATTR_CURSOR_SENSITIVITY para SQL_UNSPECIFIED ou SQL_SENSITIVE, conforme definido pelo driver. Ele nunca pode ser definido como SQL_INSENSITIVE, porque cursores insensíveis são sempre somente leitura. |
SQL_ATTR_CURSOR_SCROLLABLE para SQL_NONSCROLLABLE | SQL_ATTR_CURSOR_TYPE para SQL_CURSOR_FORWARD_ONLY |
SQL_ATTR_CURSOR_SCROLLABLE para SQL_SCROLLABLE | SQL_ATTR_CURSOR_TYPE para SQL_CURSOR_STATIC, SQL_CURSOR_KEYSET_DRIVEN ou SQL_CURSOR_DYNAMIC, conforme especificado pelo driver. Nunca está definido para SQL_CURSOR_FORWARD_ONLY. |
SQL_ATTR_CURSOR_SENSITIVITY para SQL_INSENSITIVE | SQL_ATTR_CONCURRENCY para SQL_CONCUR_READ_ONLY. SQL_ATTR_CURSOR_TYPE para SQL_CURSOR_STATIC. |
SQL_ATTR_CURSOR_SENSITIVITY para SQL_SENSITIVE | SQL_ATTR_CONCURRENCY para SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER ou SQL_CONCUR_VALUES, conforme especificado pelo driver. Nunca está definido para SQL_CONCUR_READ_ONLY. SQL_ATTR_CURSOR_TYPE para SQL_CURSOR_FORWARD_ONLY, SQL_CURSOR_STATIC, SQL_CURSOR_KEYSET_DRIVEN ou SQL_CURSOR_DYNAMIC, conforme especificado pelo driver. |
SQL_ATTR_CURSOR_SENSITIVITY para SQL_UNSPECIFIED | SQL_ATTR_CONCURRENCY para SQL_CONCUR_READ_ONLY, SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER ou SQL_CONCUR_VALUES, conforme especificado pelo driver. SQL_ATTR_CURSOR_TYPE para SQL_CURSOR_FORWARD_ONLY, SQL_CURSOR_STATIC, SQL_CURSOR_KEYSET_DRIVEN ou SQL_CURSOR_DYNAMIC, conforme especificado pelo driver. |
SQL_ATTR_CURSOR_TYPE para SQL_CURSOR_DYNAMIC | SQL_ATTR_SCROLLABLE para SQL_SCROLLABLE. SQL_ATTR_CURSOR_SENSITIVITY para SQL_SENSITIVE. (Mas somente se SQL_ATTR_CONCURRENCY não for igual a SQL_CONCUR_READ_ONLY. Os cursores dinâmicos atualizáveis são sempre sensíveis às alterações feitas em sua própria transação.) |
SQL_ATTR_CURSOR_TYPE para SQL_CURSOR_FORWARD_ONLY | SQL_ATTR_CURSOR_SCROLLABLE para SQL_NONSCROLLABLE. |
SQL_ATTR_CURSOR_TYPE para SQL_CURSOR_KEYSET_DRIVEN | SQL_ATTR_SCROLLABLE para SQL_SCROLLABLE. SQL_ATTR_SENSITIVITY a SQL_UNSPECIFIED ou SQL_SENSITIVE (de acordo com critérios definidos pelo condutor, se SQL_ATTR_CONCURRENCY não for SQL_CONCUR_READ_ONLY). |
SQL_ATTR_CURSOR_TYPE para SQL_CURSOR_STATIC | SQL_ATTR_SCROLLABLE para SQL_SCROLLABLE. SQL_ATTR_SENSITIVITY para SQL_INSENSITIVE (se SQL_ATTR_CONCURRENCY for SQL_CONCUR_READ_ONLY). SQL_ATTR_SENSITIVITY para SQL_UNSPECIFIED ou SQL_SENSITIVE (se SQL_ATTR_CONCURRENCY não for SQL_CONCUR_READ_ONLY). |