Oracle CURSOR FOR UPDATE (Português)

Resumo: neste tutorial, você aprenderá como usar o cursor atualizável Oracle para atualizar dados em uma tabela.

Introdução ao Oracle Cursor FOR UPDATE

Às vezes, você deseja bloquear um conjunto de linhas antes de atualizá-las em seu programa. A Oracle fornece a FOR UPDATE cláusula da instrução SELECT em um cursor atualizável para executar este tipo de mecanismo de bloqueio.

Esta é a sintaxe para declarar um cursor atualizável:

A nova sintaxe aqui é as FOR UPDATE palavras-chave.

Assim que você abrir o cursor, o Oracle bloqueará todas as linhas selecionadas pela instrução SELECT ... FOR UPDATE nas tabelas especificadas em FROM cláusula. E essas linhas permanecerão bloqueadas até que o cursor seja fechado ou a transação seja concluída com COMMIT ou ROLLBACK.

Observe que o Oracle bloqueia todas as linhas retornadas pelo SELECT ... FOR UPDATE durante a atualização, portanto, você deve ter uma cláusula WHERE para selecionar apenas as linhas necessárias a ser bloqueado.

Se você tem uma coluna específica que deseja atualizar, pode listá-la na cláusula FOR UPDATE da seguinte maneira:

Nesse caso, o Oracle bloqueia apenas as linhas da tabela que têm o nome da coluna listado na cláusula FOR UPDATE OF.

Observe que se você usar apenas a cláusula FOR UPDATE e não incluir uma ou mais colunas após a palavra-chave OF, o Oracle então bloquear todas as linhas selecionadas em todas as tabelas listadas na cláusula FROM.

Exemplo de Cursor Oracle FOR UPDATE

Considere o seguinte exemplo.

Como funciona.

  • Primeiro, declare um cursor atualizável que atualiza os créditos dos clientes cujos créditos são maiores que zero.
  • Próxima , faça um loop pelas linhas nos cursores.
  • Em seguida, obtenha o número de pedidos para cada cliente.
  • Depois disso, atribua o incremento de crédito com base na contagem de pedidos.
  • Por fim, atualize o crédito do cliente.

Neste tutorial, você aprendeu como usar o cursor atualizável do Oracle para atualizar dados em uma tabela.

  • Este tutorial foi útil?
  • Sim Não

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *