Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2024

Banco de DadosSQL
Código
fg100798
Banca
FGV
Órgão
TRF - 1ª REGIÃO
Ano
2024
Nível
Superior
Cargo
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:
  1. Atodos os cinco;
  2. Bsomente 1, 2, 3 e 4;
  3. Csomente 2, 4 e 5;
  4. Dsomente 2, 3 e 5;
  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.

Gabarito: letra B.

Link permanente: /questoes/fg100798