Analista Judiciário - Especialidade - Análise de Sistemas - Banco de Dados
Analise o script de uma stored procedure no âmbito do SQL Server.Nesse contexto, considere as três hipóteses de comandos que invocam o procedimento armazenado TESTE.I.EXECUTE TESTE '99999999900', '1000999';II.EXEC TESTE @CPF = '99999999900',@Produdo = '1000999';III.EXECUTE TESTE @CPF = '99999999900' and@Produdo = '1000999';Está correto o que se apresenta em:
Asomente I;
Bsomente I e II;
Csomente I e III;
Dsomente II e III;
EI, II e III.
Revelar gabarito e comentário▾
GabaritoB — somente I e II;
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”.
Stored Procedures no SQL Server: sintaxe de invocação
Gabarito: letra B. No SQL Server, uma stored procedure pode ser invocada de duas formas sintaticamente válidas: com EXECUTE/EXEC seguido dos argumentos posicionais (como em I) ou com EXEC/EXECUTE seguido de @parametro = valor para cada parâmetro nomeado (como em II). A forma III é inválida porque usa a palavra-chave and entre os argumentos nomeados, o que não faz parte da sintaxe de chamada de procedures no T-SQL — o and é um operador lógico de consultas, não um separador de argumentos.
Uma stored procedure (ou procedimento armazenado) é um conjunto de comandos SQL pré-compilados e armazenados no servidor do banco de dados, que pode ser executado repetidamente para realizar tarefas específicas. No SQL Server, a sintaxe para executar uma procedure é EXECUTE ou sua abreviação EXEC, seguida do nome da procedure e dos parâmetros. Existem duas maneiras de passar os parâmetros: posicional (na ordem em que foram declarados na procedure) e nomeada (usando @nome_do_parametro = valor).
A forma posicional é a mais simples: basta listar os valores na ordem correta, separados por vírgula. Por exemplo, se a procedure TESTE foi criada com dois parâmetros @CPF e @Produto, a chamada EXECUTE TESTE '99999999900', '1000999' passa o primeiro valor para @CPF e o segundo para @Produto. Essa é a forma I, que está correta.
A forma nomeada é mais explícita e não depende da ordem dos parâmetros: cada argumento é precedido pelo nome do parâmetro, seguido do sinal de igual e do valor. A chamada EXEC TESTE @CPF = '99999999900', @Produto = '1000999' é válida e passa os valores corretamente para cada parâmetro. Essa é a forma II, que também está correta.
A forma III tenta combinar as duas abordagens de forma incorreta: usa @CPF = '99999999900' and @Produto = '1000999'. O problema é o uso do and entre os argumentos. No T-SQL, o and é um operador lógico usado em cláusulas WHERE ou HAVING para combinar condições, não um separador de argumentos em uma chamada de procedure. A sintaxe correta para separar argumentos nomeados é a vírgula, como na forma II. Portanto, a forma III é inválida e geraria um erro de sintaxe.
A pegadinha desta questão está justamente na forma III: o candidato pode ser tentado a achar que and é um separador válido, mas ele não é. A banca explora a confusão entre a sintaxe de chamada de procedures e a sintaxe de consultas SQL, onde and é comum. Guarde a regra: na chamada de procedure, os argumentos são separados por vírgula, nunca por and.
Invocação de stored procedure (T-SQL)
1Sintaxe válida
Posicional (EXECUTE TESTE 'valor1', 'valor2')
Nomeada
EXEC TESTE @param = 'valor', @param2 = 'valor'
2Sintaxe inválida
Uso de "and" entre argumentos
LEVEL · soulevel.com.br
Item I — ✅ Correto
A forma EXECUTE TESTE '99999999900', '1000999' é válida. Ela usa a sintaxe posicional, passando os valores na ordem em que os parâmetros foram declarados na procedure. O comando EXECUTE (ou EXEC) é a palavra-chave correta para invocar uma stored procedure no SQL Server, e os argumentos posicionais são separados por vírgula.
Item II — ✅ Correto
A forma EXEC TESTE @CPF = '99999999900', @Produto = '1000999' é válida. Ela usa a sintaxe nomeada, onde cada argumento é precedido pelo nome do parâmetro (@CPF, @Produto) seguido do sinal de igual e do valor. Os argumentos nomeados também são separados por vírgula. Essa forma é mais robusta, pois não depende da ordem dos parâmetros.
Item III — ❌ Incorreto
A forma EXECUTE TESTE @CPF = '99999999900' and @Produto = '1000999' é inválida. O erro está no uso do and entre os argumentos nomeados. No T-SQL, o and é um operador lógico usado em expressões booleanas (como em WHERE), não um separador de argumentos em uma chamada de procedure. A sintaxe correta exige vírgula entre os argumentos, como na forma II. Portanto, essa chamada geraria um erro de sintaxe.
Conclusão: Corretos: I e II → portanto a alternativa é a letra B.