Resumo: neste tutorial, você aprenderá como usar o cursor do SQL Server para processar um conjunto de resultados, uma linha por vez.
O SQL funciona com base no conjunto, por exemplo, a instrução SELECT
retorna um conjunto de linhas que é chamado de conjunto de resultados. No entanto, às vezes, você pode querer processar um conjunto de dados linha por linha. É aqui que os cursores entram em jogo.
O que é um cursor de banco de dados
Um cursor de banco de dados é um objeto que permite percorrer as linhas de um conjunto de resultados. Ele permite que você processe linhas individuais retornadas por uma consulta.
Ciclo de vida do cursor do SQL Server
Estas são as etapas para usar um cursor:
Primeiro, declare um cursor.
Code language: SQL (Structured Query Language) (sql)
Para declarar um cursor, você especifica seu nome após a DECLARE
palavra-chave com o tipo de dados CURSOR
e fornece um SELECT
instrução que define o conjunto de resultados para o cursor.
Em seguida, abra e preencha o cursor executando SELECT
instrução:
Code language: SQL (Structured Query Language) (sql)
Em seguida, busque uma linha do cursor em uma ou mais variáveis:
Code language: SQL (Structured Query Language) (sql)
O SQL Server fornece a função @@FETCHSTATUS
que retorna o status da última instrução do cursor FETCH
executada contra o cursor; Se @@FETCHSTATUS
retornar 0, significa que a instrução FETCH
foi bem-sucedida. Você pode usar a instrução WHILE
para buscar todas as linhas do cursor conforme mostrado no seguinte código:
Code language: SQL (Structured Query Language) (sql)
Depois disso, feche o cursor:
Code language: SQL (Structured Query Language) (sql)
Por fim, desaloque o cursor:
Code language: SQL (Structured Query Language) (sql)
Exemplo de cursor do SQL Server
Usaremos a tabela prodution.products
do banco de dados de exemplo para mostrar como usar um cursor:
Primeiro, declare duas variáveis para conter o nome do produto e o preço de lista, e um cursor para manter o resultado de uma consulta que recupera o nome do produto e o preço de lista da tabela production.products
:
Em seguida, abra o cursor:
Code language: SQL (Structured Query Language) (sql)
Em seguida, busque cada linha do cursor e imprima o nome do produto e o preço de tabela:
Depois disso, feche o cursor:
Code language: SQL (Structured Query Language) (sql)
Por fim, desaloque o cursor para liberá-lo.
Os seguintes snippets de código colocam tudo junto:
Aqui está a saída parcial:
Na prática, você raramente usará o cursor para processar um conjunto de resultados linha por linha.
Neste tutorial, você aprendeu como usar o cursor do SQL Server para processar um conjunto de resultados, cada linha por vez.