Introdução aos Cursores em PL / SQL
PL / SQL é uma das linguagens de programação mais usadas quando se trata de programação de banco de dados. Alguns conceitos importantes de PL / SQL precisam aprender e entender claramente por um programador de PL / SQL para usá-los adequadamente. O cursor é um deles. No programa PL / SQL, as instruções SQL precisam ser executadas no final. O cursor é como um ponteiro usado para apontar a área de contexto, criada pelo Oracle para executar a instrução SQL. Um Cursor mantém todas as linhas retornadas após o processamento das instruções SQL. O conjunto da linha que é mantida pelo Cursor é chamado de Conjunto Ativo. O cursor também pode ser nomeado para usá-lo ainda mais no programa por um programador. Neste tópico, vamos aprender sobre os cursores no PL / SQL.
Tipos de Cursores
Existem 2 tipos de Cursores usados na programação PL / SQL:
1. Cursores implícitos
Como o nome indica, cursores implícitos são aqueles criados automaticamente pelo Oracle quando são executadas quaisquer instruções DML como INSERT, DELETE, UPDATE. Quando o programador não cria nenhum cursor, o Oracle por si só o cria para manter as linhas afetadas pelas instruções DML. Esses cursores não podem ser nomeados pelo programador e, portanto, não podem ser referidos e usados em outro local no código. Embora o Oracle forneça alguns atributos para executar algumas operações, como
% Encontrado, % não encontrado, % ROWCOUNT, % ISOPEN.
S.No. | Atributo | Descrição |
1 | %ENCONTRADO | Retorna True se instruções DML como INSERT,
DELETE, UPDATE afeta uma ou mais linhas ou a instrução SELECT retorna uma ou mais linhas. Caso contrário, ele retornará False |
2) | %NÃO ENCONTRADO | É o oposto do atributo% FOUND. Retorna True se nenhuma das linhas for afetada pela instrução DML ou a instrução SELECT não retornar resultados. Caso contrário, ele retornará False. |
3) | %ESTÁ ABERTO | No caso de cursores implícitos, ele sempre retorna False porque o Oracle fecha o cursor logo após a execução das instruções SQL. |
4) | %CONTAGEM DE LINHAS | Retorna a contagem de linhas. Ou seja, a contagem do número de linhas afetadas pelo DML mencionado |
instruções do programador no código PL / SQL, como INSERT, DELETE e UPDATE ou o número de linhas retornadas pela instrução SELECT INTO. |
Exemplo
Cenário: Para atualizar as marcas de todos os alunos em uma tabela 'aluno' em inglês Assunto com a coluna 'assunto' em 10.
DECLARE
affected_rows number(4);
BEGIN
UPDATE students SET marks = marks+10 where subject = 'English';
IF sql%NOTFOUND THEN dbms_output.put_line ('No records of English subject are updated');
ELSIF sql%FOUND THEN affected rows: = affected rows%rowcount
dbms_output.put_line('Congrats ..Records Updated' || affected_rows);
END IF;
END;
/
2. Cursores explícitos
Cursores explícitos são aqueles cursores definidos pelos programadores para ter mais controle sobre a área de contexto (onde os resultados das consultas SQL são armazenados). Esses cursores precisam ser definidos primeiro no bloco de declaração do programa PL / SQL. Ele é criado para as instruções SQL que retornam mais de uma linha após processá-las. Existe um procedimento específico que precisa ser seguido para o uso de um Cursor Explícito. As etapas para usar o Cursor Explícito são mencionadas abaixo:
1. Declarar o cursor: É usado para dar um nome à área de contexto / cursor junto com a instrução select que precisa ser executada.
Sintaxe
CURSOR cursor_name IS SELECT statement;
2. Abra o cursor: Abrir um cursor, aloca a memória para ele e disponibiliza-o para buscar os registros retornados pela instrução SQL.
Sintaxe
OPEN cursor_name;
3. Busque o cursor: nesse processo, uma linha é acessada por vez. A instrução SELECT é executada e as linhas buscadas são armazenadas na área de contexto. Ele busca os registros e os atribui a uma variável definida.
Sintaxe
FETCH cursor_name INTO variable;
4. Feche o cursor: Esta etapa é usada para fechar o cursor aberto acima para desalocar a memória assim que todas as linhas armazenadas forem buscadas com êxito.
Sintaxe
CLOSE cursor_name;
Exemplo
Cenário: recuperar o nome, endereço e porcentagem geral de alunos em uma tabela
'aluno' com colunas 'nome', 'endereço' e 'porcentagem'
DECLARE
stud_name student.name%type; stud_address student.address%type;
stud_percentage student.percentage%type;
CURSOR stud IS SELECT name, address, percentage FROM student; BEGIN
Open stud;
LOOP
FETCH stud into stud_name, stud_address, stud_percentage;
EXIT when stud%NOTFOUND;
dbms_ouput.put_line(stud_name || ' ' || stud_address || ' ' || stud_percentage);
END LOOP;
CLOSE stud;
END
/
Ações do cursor
Ao contrário do SQL, que funciona em todas as linhas de um conjunto de resultados de cada vez, o cursor é usado principalmente nos cenários em que o programador deseja processar e recuperar os dados de uma linha de cada vez.
Abaixo mencionadas, estão algumas das ações do cursor:
- Declarar um cursor: É importante declarar um cursor antes de usá-lo. Um cursor é declarado definindo a instrução SQL que precisa ser processada.
- Abrir um Cursor: Após a declaração, um cursor é aberto e preenchido pelo retorno de dados pelo processamento da instrução SQL.
- Buscar um Cursor: Depois que o cursor é aberto, as linhas de saída precisam ser buscadas uma a uma para executar qualquer manipulação, se necessário.
- Feche um cursor: Depois de toda a manipulação de dados. Um cursor criado precisa ser fechado
- Desalocar: Esta etapa inclui excluir o cursor e libera todos os recursos que ele possui.
Importância do Cursor no PL / SQL
Apontar para o local da memória e executar ações de acordo é uma das tarefas importantes em qualquer linguagem de programação. No PL / SQL, é feito pelos cursores. Os cursores desempenham um papel crucial quando se trata de executar tarefas diferentes, atribuindo um nome à área de memória (área de contexto) em que os resultados das consultas SQL são salvos. Podemos acessar os registros um por um e executar qualquer manipulação nele, se necessário, ou exibi-los no console de acordo. Os cursores explícitos são mais eficientes, oferecem mais controle programático e menos vulneráveis a erros de dados, portanto, são muito úteis na programação PL / SQL que os implícitos.
Conclusão
Atualmente, a programação de banco de dados é muito popular e o PL / SQL é uma das linguagens que devem ser muito bem usadas. Os cursores dão mais controle ao programador para acessar os dados recuperados. Para um programador trabalhar no PL / SQL, é importante conhecer o uso e a importância do Cursor para funcionar de maneira eficaz.
Artigos recomendados
Este é um guia para os cursores em PL / SQL. Aqui discutimos os tipos de Cursores usados na programação PL / SQL com Ações do Cursor e a importância do cursor. Você também pode consultar os seguintes artigos para saber mais -
- Tipos de junções no SQL
- Consulta de Inserção SQL
- Tabela no SQL
- Curinga no SQL
- Os 6 principais tipos de junções no MySQL com exemplos