Database
 sql >> Base de Dados >  >> RDS >> Database

O que é um cursor no SQL e como implementá-lo?

Os cursores em SQL são parte integrante de qualquer banco de dados, o que basicamente ajuda o usuário a percorrer o banco de dados sem muitos problemas. Por meio deste artigo sobre Cursor em SQL, fornecerei todos os detalhes necessários que você deve precisar antes de começar a molhar os pés.

Abaixo estão os tópicos que discutirei neste artigo:

  • O que é Cursor em SQL?
  • Tipos de cursores SQL
  • Sintaxe de um cursor SQL
  • Ciclo de vida do cursor

O que é cursor em SQL?

O cursor em SQL é um objeto que permite percorrer as linhas de qualquer conjunto de resultados. Com isso, você pode processar uma linha individual de um banco de dados que é retornada por uma consulta. É uma área de trabalho temporária ou área de contexto que é criada no sistema de memória durante a execução de uma instrução SQL que armazena os dados recuperados do banco de dados e auxilia na sua manipulação. Você pode considerá-lo como um arranjo de linhas junto com um ponteiro apontando para a linha atual. Um cursor é um objeto de banco de dados que pode conter mais de uma linha, mas pode processar apenas uma linha por vez. O conjunto de linhas mantidas por um cursor é conhecido como ativo definir. Assim, você pode controlar o registro de uma tabela em uma técnica singleton, ou seja, uma linha em qualquer momento.

Agora que você está familiarizado com o que é um cursor no SQL, vamos seguir em frente e dar uma olhada em seus vários tipos.

Tipos de cursor SQL


SQL fornece dois tipos de cursores que listei abaixo:
  1. Cursor implícito

Sempre que operações DML como INSERT, UPDATE e DELETE são processadas no banco de dados, cursores implícitos são gerados automaticamente e usados ​​pelo framework. Esses tipos de cursores são usados ​​para processamento interno e não podem ser controlados ou referenciados de outra área de código. Os cursores implícitos no SQL apenas mantêm as linhas afetadas pela operação e só podem se referir ao cursor mais recente usando os atributos de cursor mostrados abaixo na tabela.

Atributo Descrição
%FOUND Ele retornará TRUE caso uma instrução INSERT, UPDATE ou DELETE afete uma ou mais linhas ou uma instrução SELECT INTO retorne uma ou mais linhas. Em outros casos, retornará FALSE.
%NOTFOUND É tecnicamente o oposto do atributo %FOUND. Ele retorna TRUE caso uma instrução INSERT, UPDATE ou DELETE não afete nenhuma linha ou uma instrução SELECT INTO não retorne nenhuma linha. Caso contrário, ele retornará apenas FALSE.
%ISOPEN Este atributo sempre retornará FALSE para cursores implícitos, pois o cursor SQL é fechado automaticamente imediatamente após a execução da instrução SQL associada.
%ROWCOUNT Ele retorna o número total de linhas afetadas por uma instrução INSERT, UPDATE ou DELETE ou as linhas retornadas por uma instrução SELECT INTO.
  1. Cursor explícito

Esse tipo de cursor é gerado sempre que os dados são processados ​​por um usuário por meio de um bloco SQL. Geralmente, o uso da consulta SELECT aciona a criação de um cursor explícito e pode conter mais de uma linha, mas processar apenas uma de cada vez. Este tipo de cursor é usado para armazenar os registros presentes em uma coluna. Isso permite que os programadores criem uma área de contexto nomeada para executar suas operações DML para melhor controle. Além disso, ele precisa ser definido no bloco SQL e, por sua vez, é criado para uma consulta SELECT usando esse código.

Para entender melhor um cursor, vamos agora ver qual é a sintaxe de um cursor em SQL.

Sintaxe de um cursor SQL

Abaixo está a sintaxe geral para criar um cursor explícito.

CURSOR cursorName IS selectStatement;

Aqui:

cursorName – Isso representa um nome válido para o cursor

selectStatement – ​​Isso representa uma consulta de seleção que retornará várias linhas

Vamos agora prosseguir com este artigo e ver o ciclo de vida de um cursor SQL.

Ciclo de vida do cursor

Existem basicamente 5 estágios no ciclo de vida de um cursor em SQL que listei abaixo:

  1. Declarar
DECLARE cursorName CURSOR
FOR selectStatement;

Esta etapa o ajudará a especificar o nome e o tipo de dados do cursor e a instrução SELECT definirá seu conjunto de resultados.

  1. Abrir
OPEN cursorName;

Esta etapa permitirá que você abra e preencha o cursor executando-o.

  1. Buscar
FETCH NEXT FROM cursor INTO variableList;

Esta etapa recuperará uma linha do cursor e a armazenará em uma ou mais variáveis.

[Opcional] CheckStatus

WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cursorName;
END;

Esta função retorna o status da última instrução FETCH que foi executada no cursor. Caso esta função retorne 0, significa que a operação FETCH foi bem-sucedida. Para buscar todas as linhas do cursor, a cláusula WHILE é usada.

  1. Fechar
CLOSE cursorName;

Esta etapa o ajudará a fechar o cursor após a conclusão das operações.

  1. Desalocar
DEALLOCATE cursor_name;

Esta etapa ajudará a desalocar o cursor e liberar espaço de memória.

Com isso, gostaria de concluir este artigo sobre Cursor em SQL. Espero que este artigo tenha ajudado você a agregar valor ao seu conhecimento. Para obter mais informações sobre SQL ou bancos de dados, você pode consultar nossa lista de leitura abrangente aqui:Bancos de dados Edureka .


Noções básicas de SQL para iniciantes | Aprenda SQL | Tutorial SQL para Iniciantes | Edureka



Este vídeo da Edureka sobre 'Noções básicas de SQL para iniciantes' ajudará você a entender os conceitos básicos de SQL e também consultas SQL que são muito populares e essenciais.

Se você deseja obter um treinamento estruturado sobre MySQL, confira nosso Treinamento de certificação de DBA MySQL que vem com treinamento ao vivo conduzido por instrutor e experiência de projeto na vida real. Este treinamento ajudará você a entender o MySQL em profundidade e a dominar o assunto.

Tem alguma pergunta para nós? Por favor, mencione-o na seção de comentários de ”Cursor in SQL ” e entrarei em contato com você.