Questão de Banco de Dados — SQL — Quadrix 2025
- Código
- qg596700
- Banca
- Quadrix
- Órgão
- CRC-SP
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Desenvolvimento
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). A afirmação está incorreta porque Stored Procedures (procedimentos armazenados) não precisam retornar um valor escalar — elas podem retornar conjuntos de resultados (result sets), múltiplos valores via parâmetros de saída, ou até nenhum valor — e podem sim conter comandos de manipulação de dados (INSERT, UPDATE, DELETE), sendo essa uma de suas finalidades mais comuns. O conceito correto é que Stored Procedures são blocos de código SQL armazenados no banco, que encapsulam lógica e podem executar qualquer tipo de comando, incluindo DML e DDL.
Uma Stored Procedure é um conjunto de instruções SQL pré-compiladas e armazenadas no SGBD, que pode ser executado sob demanda. Ela é criada com o comando CREATE PROCEDURE e invocada com EXEC ou CALL, dependendo do banco. Diferentemente de funções (UDFs), que em muitos SGBDs são obrigadas a retornar um valor escalar ou tabela, as procedures têm liberdade: podem retornar um ou mais result sets, usar parâmetros de entrada e saída, e não precisam retornar nada. Por exemplo, uma procedure de atualização de estoque pode simplesmente executar um UPDATE e não retornar valor algum.
A afirmação também erra ao dizer que procedures não podem conter comandos de manipulação de dados. Na prática, o uso mais comum de procedures é justamente encapsular operações de escrita (INSERT, UPDATE, DELETE) para garantir consistência, aplicar regras de negócio e melhorar a segurança. Um exemplo clássico: uma procedure sp_Transferir que executa um UPDATE na conta de origem e outro na conta de destino, dentro de uma transação. Isso é perfeitamente válido e amplamente utilizado.
A confusão que a banca explora é misturar características de funções com as de procedures. Funções (como FUNCTION no SQL Server ou FUNCTION no Oracle) geralmente retornam um valor escalar e têm restrições quanto ao uso de DML (em alguns bancos, funções não podem modificar dados). Já as procedures são mais flexíveis. Essa distinção é essencial para responder corretamente.
A banca inverte as características de funções e procedures. Funções tipicamente retornam um valor escalar e têm restrições de DML; procedures podem retornar múltiplos resultados e executar DML livremente. O candidato que confunde os dois cai na armadilha.
A afirmação "As Stored Procedures devem sempre retornar um valor escalar e não podem conter comandos de manipulação de dados" é falsa por dois motivos:
Retorno: Stored Procedures não são obrigadas a retornar valor escalar. Elas podem retornar conjuntos de resultados (result sets), múltiplos valores via parâmetros de saída (OUT), ou nenhum valor. A obrigatoriedade de retorno escalar é típica de funções, não de procedures.
DML: Procedures podem e frequentemente contêm comandos de manipulação de dados (INSERT, UPDATE, DELETE). Essa é uma de suas principais utilidades — encapsular operações de escrita com lógica de negócio e controle transacional.
Portanto, o item está errado.
Gabarito: letra E (ERRADO).
Link permanente: /questoes/qg596700