Oracle – Where Current Of
Cláusula WHERE CURRENT OF
Sintaxe
WHERE CURRENT OF cursor ;
• Usar cursores para atualizar ou deletar a linha atual.
• Incluir a cláusula FOR UPDATE na consulta de cursor para primeiro bloquear as linhas.
• Usar a cláusula WHERE CURRENT OF para fazer referência à linha atual a partir de um cursor explícito.
Ao fazer referência à linha atual de um cursor explícito, use a cláusula WHERE CURRENT OF. Isso permite que você aplique atualizações e deleções à linha que está sendo tratada no momento, sem necessidade de fazer referência explícita a ROWID. Você deve incluir a cláusula FOR UPDATE na consulta do cursor para que as linhas sejam bloqueadas em OPEN.
Na sintaxe:
cursor é o nome de um cursor declarado (O cursor deve ter sido declarado com a cláusula FOR UPDATE.)
A Cláusula WHERE CURRENT OF
Exemplo DECLARE CURSOR cSql IS SELECT salario FROM funcionario WHERE cod_depto = 30 FOR UPDATE OF salario NOWAIT; Registro cSql%rowtype; BEGIN FOR registro IN cSql LOOP UPDATE funcionario SET salario = Registro.salario * 1.15 WHERE CURRENT OF cSql; END LOOP; COMMIT; END;
Você pode atualizar linhas com base em critérios de um cursor.
Além disso, pode criar a instrução DELETE ou UPDATE para conter a cláusula WHERE CURRENT OF cursor_name para fazer referência à linha mais recente processada pela instrução FETCH. Ao utilizar essa cláusula, o cursor ao qual você faz referência precisa existir e deve conter a cláusula FOR UPDATE na consulta do cursor; caso contrário receberá um erro. Essa cláusula permite aplicar atualizações e deleções à linha atual sem que seja necessário fazer referência explícita à pseudocoluna ROWID.