SQL: Comando ALTER TABLE compatível entre Oracle e SQL Server
Gabarito: letra D. O comando ALTER TABLE DebTrab ADD IndiceAtualiz float; é o único que utiliza sintaxe e tipos de dados aceitos tanto pelo Oracle 11g quanto pelo SQL Server, pois ambos suportam o tipo FLOAT e a adição de colunas com ALTER TABLE ... ADD.
A questão testa o conhecimento das diferenças de sintaxe entre SGBDs, especialmente para o comando ALTER TABLE. Enquanto a adição de colunas (ADD) é padrão, a alteração do tipo de uma coluna existente possui comandos distintos: ALTER COLUMN no SQL Server e MODIFY no Oracle.
Alternativa | Comando SQL | Compatível Oracle? | Compatível SQL Server? | Motivo da In/compatibilidade |
|---|
A | ALTER TABLE DebTrab ALTER COLUMN NroProcesso integer;
| ❌ | ✅ | ALTER COLUMN é sintaxe do SQL Server; Oracle usa MODIFY.
|
B | ALTER TABLE DebTrab MODIFY NroProcesso int;
| ✅ | ❌ | MODIFY é sintaxe do Oracle; SQL Server usa ALTER COLUMN.
|
C | ALTER TABLE DebTrab ADD DataPartida data;
| ❌ | ❌ | ADD é padrão, mas tipo data não existe (correto seria DATE).
|
D | ALTER TABLE DebTrab ADD IndiceAtualiz float;
| ✅ | ✅ | ADD é padrão SQL; tipo FLOAT é suportado por ambos.
|
E | ALTER TABLE DebTrab DROP COLUMN DataPartida;
| ✅ (sintaxe) | ✅ (sintaxe) | ❌ Coluna DataPartida não existe na tabela, gerando erro de execução. |
Alternativa A — ❌ Incorreta
Utiliza ALTER COLUMN, que é a sintaxe do SQL Server (e MySQL), mas não funciona no Oracle (que usa MODIFY). Portanto, não é aplicável em ambas as plataformas.
Alternativa B — ❌ Incorreta
Utiliza MODIFY, que é a sintaxe do Oracle, mas não é aceita no SQL Server. Também não é compatível com ambas.
Alternativa C — ❌ Incorreta
A cláusula ADD está correta, mas o tipo de dado data não é um tipo SQL válido. O tipo correto para data seria DATE. Além disso, mesmo se fosse DATE, a sintaxe seria aceita em ambos, mas o erro no tipo torna o comando inválido.
Alternativa D — ✅ Correta ⟵ GABARITO
O comando ALTER TABLE DebTrab ADD IndiceAtualiz float; é perfeitamente válido: ADD é padrão SQL e o tipo FLOAT é suportado tanto pelo Oracle quanto pelo SQL Server. Assim, pode ser executado em ambas as plataformas sem erros de sintaxe.
Alternativa E — ❌ Incorreta
Embora a sintaxe DROP COLUMN seja válida em ambos os SGBDs, a tabela DebTrab (conforme dados fornecidos) não possui uma coluna chamada DataPartida. Portanto, a tentativa de remover uma coluna inexistente geraria um erro de execução, o que impede sua aplicação.
Gabarito: letra D.