Em relação à Linguagem PL/SQL, todas as afrmativas abaixo es...
Só é possível recuperar de um cursor aberto o registro seguinte ao atual e nunca o anterior.
É utilizada a instrução FETCH para pegar o próximo registro ou abrir um cursor dentro de uma estrutura de LOOP. Exemplo do uso de um Cursor:
DECLARE
CURSOR c1 IS SELECT ename, job FROM emp WHERE sal < 3000;
my_record c1%ROWTYPE;
...
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO my_record;
EXIT WHEN c1%NOTFOUND;
-- process data record
END LOOP;
CLOSE c1;
...END;
Cursor não anda pra trás
Acho que é a opção B pq com esse comando eu consigo dar commit dentro de uma trigger. PRAGMA AUTONOMOUS_TRANSACTION;
Fiz um teste e commitou sussegado (em uma tabela de historico), e eu consigo sim consultar um registro anterior do cursor normalmente. estou aprendendo ainda mas consegui testar esses dois. se estiver errado alguem da uma luz...
A alternativa correta para a questão é a D - Os cursores são bidirecionais, ou seja, a partir do registro corrente do cursor é possível obter o registro anterior ou o próximo.
Para entender melhor o contexto da questão, vamos explorar cada alternativa com base no conhecimento de PL/SQL no Oracle:
- Alternativa A: Afirma que uma função armazenada pode ser utilizada em um comando SQL do Oracle da mesma maneira que as funções SQL nativas. Isso é verdadeiro, pois no Oracle, funções definidas pelo usuário podem de fato ser invocadas em instruções SQL assim como funções internas, como LENGTH ou TO_DATE, por exemplo.
- Alternativa B: Gatilhos de banco de dados (triggers) não podem conter os comandos COMMIT ou ROLLBACK. Isso também é verdadeiro. Gatilhos são projetados para serem automáticos e devem funcionar de maneira transparente em relação às transações. Incluir um COMMIT ou ROLLBACK dentro de um gatilho poderia interferir com a transação que o ativou, o que não é permitido.
- Alternativa C: A linguagem suporta tratamento de exceções. Esta afirmação é correta. A PL/SQL fornece uma estrutura robusta para o tratamento de exceções, permitindo que os programas capturem e respondam a erros de runtime de forma controlada.
- Alternativa D: Os cursores são bidirecionais, ou seja, a partir do registro corrente do cursor é possível obter o registro anterior ou o próximo. Esta é a alternativa incorreta e, portanto, o gabarito da questão. Em PL/SQL, os cursores são, por padrão, unidirecionais, o que significa que você pode somente avançar para o próximo registro. Não há suporte nativo para voltar ao registro anterior sem reexecutar o cursor ou sem implementar uma lógica específica para esse propósito.
Assim, é importante lembrar que, em PL/SQL, os cursores facilitam a navegação e processamento de linhas retornadas por uma consulta. No entanto, a natureza unidirecional padrão dos cursores é um aspecto fundamental que deve ser considerado ao projetar soluções envolvendo navegação em conjuntos de resultados.