← Questões de Banco de Dados

Banco de Dados · FGV · 2022

Questão comentada de Banco de Dados

Considere o script Oracle PL/SQL a seguir. DECLARE var_x(2); BEGIN UPDATE calendario SET dia = dia + 1; IF ....... THEN dbms_output.put_line('Zero alterados.'); ELSIF ....... THEN var_x:= ....... ; dbms_output.put_line(var_x || ' alterados.'); END IF; END; Para que esse script funcione corretamente, os três trechos pontilhados devem ser substituídos, na ordem em que aparecem, por

Gabarito: D

Em PL/SQL, quando voce executa um comando DML como UPDATE, o Oracle preenche automaticamente alguns atributos do cursor implícito chamado SQL. Eles servem para saber o resultado da operação sem precisar contar linha por linha: SQL%NOTFOUND indica que nenhuma linha foi afetada, SQL%FOUND indica que pelo menos uma linha foi afetada, e SQL%ROWCOUNT mostra quantas linhas foram atingidas. Nesta questão, o script faz um UPDATE em calendario e depois testa exatamente esse resultado. Se nada foi alterado, a condição deve usar SQL%NOTFOUND para imprimir "Zero alterados.". Se houve alteração, a segunda verificação deve usar SQL%FOUND e então guardar em var_x a quantidade de linhas afetadas com SQL%ROWCOUNT. Por isso o gabarito é a alternativa D: SQL%NOTFOUND / SQL%FOUND / SQL%ROWCOUNT. É o trio clássico do cursor implícito em Oracle PL/SQL, muito cobrado em prova. A lógica é simples: notfound para zero, found para algum resultado, rowcount para o número exato. Sem mistério, só o Oracle fazendo a contagem e você lendo o placar.

Continue treinando

Questões relacionadas