Cursores (Mecanismo de Banco de Dados)

As operações em um ato de banco de dados relacional em um conjunto completo de linhas. O conjunto de linhas retornado por uma instrução SELECT consiste de todas as linhas que satisfazem as condições na cláusula WHERE da instrução. Este conjunto completo de linhas retornado pela instrução é conhecido como conjunto de resultados. Aplicativos, especialmente aplicativos online interativos, não podem sempre trabalhar efetivamente com todo o conjunto de resultados como uma unidade. Estes aplicativos precisam de um mecanismo para trabalhar com uma linha ou um bloco pequeno de linhas por vez. Os cursores são uma extensão dos conjuntos de resultados que provêem esse mecanismo.

Os cursores estendem o resultado de processamento por:

  • Permitirem o posicionamento em linhas específicas do conjunto de resultados.

  • Recuperarem uma linha ou bloco de linhas de posições atuais em um conjunto de resultados.

  • Oferecerem suporte às modificações de dados nas linhas da posição atual no conjunto de resultados.

  • Oferecerem suporte a diferentes níveis de visibilidade às mudanças feitas por outros usuários ao banco de dados que são apresentados no conjunto de resultados.

  • Fornecerem instruções Transact-SQL em scripts, procedimentos armazenados, e acionarem o acesso de gatilho aos dados em um conjunto de resultados.

Solicitando um cursor

O Microsoft SQL Server oferece suporte à dois métodos de solicitação de cursor:

  • Transact-SQL

    A linguagem Transact-SQL oferece suporte à uma sintaxe para utilizar cursores modelados após a sintaxe de cursor ISO.

  • Funções de cursor de interface de programação de aplicativo (API) de banco de dados

    O SQL Server oferece suporte à funcionalidade do cursor desses APIs de banco de dados:

    • ADO (Microsoft ActiveX Data Object)

    • OLE DB

    • ODBC (Open Database Connectivity)

Um aplicativo não deve nunca misturar estes dois métodos de solicitar um cursor. Um aplicativo que tenha usado um API para especificar comportamentos de cursor não deveria portanto executar uma instrução Transact-SQL DECLARE CURSOR para também solicitar um cursor Transact-SQL. Um aplicativo deve apenas executar DECLARE CURSOR se ele tiver retornado todos os atributos API do cursor de volta ao seu padrão.

Se não tiver havido uma solicitação de um cursor API, o Transact-SQL , SQL Server padroniza para retornar um conjunto completo de resultados, conhecido como um conjunto padrão de resultados, para o aplicativo.

Processo do cursor

Cursores Transact-SQL e cursores API têm sintaxe diferente, mas o processo geral seguinte é usado com todos os cursores SQL Server:

  1. Associe um cursor ao conjunto de resultados de uma instrução Transact-SQL e defina as características do cursor, tais como se as filas no cursor podem ser atualizadas ou não.

  2. Execute a instrução Transact-SQL para preencher o cursor.

  3. Recupere as linhas no cursor que você quer visualizar. A operação para recuperar uma linha ou um bloco de linhas de um cursor é denominada busca. Executar uma série de buscas para recuperar linhas em direção para frente ou para trás é chamado rolagem.

  4. Opcionalmente, execute operações de modificação (atualização ou exclusão) na fila da posição atual no cursor.

  5. Feche o cursor.