Questão nº 55

Questão de Tecnologia da Informação · FGV TJ-SE Servidor 2023 (nº 55)

FGV2023Analista Judiciário - Análise de Sistemas - Banco de DadosTecnologia da Informação
Gabarito: Bver comentário ↓

Analise o script de uma stored procedure no âmbito do SQL Server.

CREATE PROCEDURE TESTE
@CPF varchar(11),
@Produdo varchar(12)
AS
SELECT count() Contagem
FROM VENDA
WHERE CPF = @CPF
AND CodProdudo = @Produdo;

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:

Resposta comentada

Gabarito Alternativa B

Stored procedures são blocos de código SQL pré-compilados e armazenados no banco de dados, que podem ser executados (chamados) para realizar tarefas específicas, recebendo ou não valores (parâmetros) para personalizar sua execução.

(A) Incorreta: A alternativa I está correta, mas não é a única.
(B) Correta: Ambas as formas de invocação (I e II) são válidas no SQL Server. A alternativa I utiliza a passagem de parâmetros por posição, onde os valores são atribuídos aos parâmetros na ordem em que foram declarados na procedure. A alternativa II utiliza a passagem de parâmetros por nome, onde cada valor é explicitamente associado ao seu respectivo parâmetro usando `@nome_do_parametro = valor`, o que é mais claro e permite mudar a ordem dos parâmetros.
(C) Incorreta: A alternativa III está incorreta.
(D) Incorreta: A alternativa III está incorreta.
(E) Incorreta: A alternativa III está incorreta.

Armadilha da alternativa III: O uso do operador `AND` na alternativa III (`@CPF = '...' and @Produdo = '...'`) é a pegadinha. O `AND` é um operador lógico usado para combinar condições booleanas, não para separar atribuições de parâmetros. O SQL Server tentaria avaliar a expressão `(@CPF = '99999999900' AND @Produdo = '1000999')` como um único valor booleano (verdadeiro ou falso) e tentaria passá-lo como o primeiro e único parâmetro para a procedure, o que resultaria em um erro de sintaxe ou de conversão de tipo de dados, pois a procedure espera dois parâmetros `varchar`.

Fonte: FGV TJ-SE Servidor 2023 Analista Judiciário - Análise de Sistemas - Banco de Dados (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho