Analista Judiciário - Área Apoio Especializado - Especialidade: Análise de Dados
No contexto de stored procedures no SQL Server, considere o script a seguir.CREATE PROCEDURE TESTE @X int =2 AS SELECT * FROM fibo WHERE N = @X Levando em conta essa definição, analise a lista de cinco sugestões de comandos que poderiam acionar a execução da procedure TESTE. 1. EXEC TESTE @X = 1 2. TESTE 3. EXEC TESTE 2 4. TESTE 1 5. CALL TESTE 2 Sobre esses comandos, é correto concluir que são válidos:
Atodos os cinco;
Bsomente 1, 2, 3 e 4;
Csomente 2, 4 e 5;
Dsomente 2, 3 e 5;
Esomente 1, 3 e 4.
Revelar gabarito e comentário▾
GabaritoB — somente 1, 2, 3 e 4;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Execução de Stored Procedures no SQL Server
Gabarito: letra B. São válidos os comandos 1, 2, 3 e 4. A sintaxe para executar uma stored procedure no SQL Server permite o uso de EXEC (ou EXECUTE) seguido do nome e parâmetros, ou até mesmo apenas o nome da procedure quando não há parâmetros ou com parâmetros posicionais sem a palavra-chave EXEC. O comando 5 (CALL) não é suportado no T-SQL.
A banca testa o conhecimento da sintaxe de execução de procedures no SQL Server. Embora a prática comum seja usar EXEC, o SQL Server aceita chamadas sem EXEC em determinados contextos, como quando a procedure é a primeira instrução de um lote.
Comando
Sintaxe Utilizada
Válido no SQL Server?
Observação
1. EXEC TESTE @X = 1
EXEC + parâmetro nomeado
✅ Sim
Sintaxe padrão e explícita
2. TESTE
Apenas nome da procedure
✅ Sim
Válido como primeira instrução do lote; usa valor padrão do parâmetro
3. EXEC TESTE 2
EXEC + parâmetro posicional
✅ Sim
Sintaxe padrão
4. TESTE 1
Nome da procedure + parâmetro posicional (sem EXEC)
✅ Sim
Válido como primeira instrução do lote
5. CALL TESTE 2
Palavra-chave CALL
❌ Não
CALL não é suportado no T-SQL (é de MySQL/Oracle)
Alternativa A — ❌ Incorreta
Afirma que todos os cinco comandos são válidos, mas o comando 5 (CALL TESTE 2) não é válido no SQL Server. CALL é utilizado em outros SGBDs (como MySQL e Oracle), não no T-SQL.
Alternativa B — ✅ Correta ⟵ GABARITO
Lista os comandos 1, 2, 3 e 4 como válidos. De fato:
Comando 1 (EXEC TESTE @X = 1): válido, pois usa EXEC com parâmetro nomeado.
Comando 2 (TESTE): válido, pois o SQL Server permite executar uma procedure apenas com seu nome, assumindo os valores padrão dos parâmetros.
Comando 3 (EXEC TESTE 2): válido, pois usa EXEC com parâmetro posicional.
Comando 4 (TESTE 1): válido, pois o SQL Server aceita a chamada da procedure com parâmetro posicional sem a palavra EXEC, desde que não haja ambiguidade (por exemplo, a expressão TESTE 1 é interpretada como a execução da procedure com argumento 1).
Alternativa C — ❌ Incorreta
Inclui o comando 5 (CALL), que é inválido, e exclui os comandos 1 e 3, que são válidos.
Alternativa D — ❌ Incorreta
Inclui o comando 5 (CALL), inválido, e exclui os comandos 1 e 4, que são válidos.
Alternativa E — ❌ Incorreta
Exclui o comando 2 (TESTE), que é válido, e inclui o comando 4, que é válido, mas ao excluir o 2 a alternativa fica incompleta.
NÃO CAIA NESSA!
A banca explora a confusão entre sintaxes de diferentes SGBDs. O CALL é comum no MySQL e Oracle, mas no SQL Server o comando é EXEC. Além disso, muitos candidatos acreditam que TESTE ou TESTE 1 sem EXEC são inválidos, quando na verdade o SQL Server aceita essas formas em certos contextos.