Questão FC372945
No SQL Server 2017 um Auditor Fiscal da área de Tecnologia da Informação foi chamado para analisar as instruções abaixo. DELETE Producao.HistoricoCustoProduto WHERE CustoPadrao BET
Sistema de Gerenciamento de Banco de Dados (SGBD)
FCC · 2019
No SQL Server 2017 um Auditor Fiscal da área de Tecnologia da Informação foi chamado para analisar as instruções abaixo.
DELETE Producao.HistoricoCustoProduto
WHERE CustoPadrao BETWEEN 12.00 AND 14.00
AND DataFim IS_NULL;
PRINT 'O número de linhas excluídas é ' + CAST(@@ROWCOUNT as char(3));
Concluiu corretamente que há um erro na instrução
- @@ROWCOUNT, pois deveria conter apenas um caracter @.
- IS_NULL, que deveria ser escrita como IS NULL.
- CAST, por ser um comando totalmente desnecessário nesse contexto.
- PRINT, pois para exibir a informação na tela deveria ser usada a instrução ECHO.
- BETWEEN 12.00 AND 14.00, pois os valores 12.00 AND 14.00 deveriam ser colocados entre parênteses.
Mostrar resposta e comentário
Gabarito
B
Comentário do professor
A sequência IS_NULL está incorreta porque, no T-SQL, o teste de nulidade é feito pelo operador composto IS NULL — duas palavras separadas. O token IS_NULL não existe e gera erro de sintaxe.
Isso ocorre porque NULL representa valor desconhecido; não pode ser comparado com operadores binários como =. Para verificar se uma coluna é nula usa‑se explicitamente IS NULL (ou IS NOT NULL para o contrário).
Exemplo correto aplicado ao enunciado:
DELETE Producao.HistoricoCustoProduto WHERE CustoPadrao BETWEEN 12.00 AND 14.00 AND DataFim IS NULL;
Portanto, basta substituir IS_NULL por IS NULL para que a instrução funcione conforme esperado.
Conteúdo do catálogo FC Concursos · Atualizado em