Questão nº 47

Questão de Banco de Dados · FGV CGE-SC 2022 (nº 47)

FGV2022Auditor do Estado - Ciências da ComputaçãoBanco de Dados
Gabarito: Ever comentário ↓

É comum, em um sistema de informação que utiliza banco de dados relacional, como por exemplo o MySQL, executar diferentes comandos SQL em sequência para obter um resultado. A depender do que será realizado, muitos SQL em sequência podem ser executados em módulos diferentes do mesmo sistema. Para estimular a reutilização de código, tornar a programação mais simples, além de compartilhar com os servidores de banco de dados o uso de recursos computacionais para executar os comandos SQL, o SGBD permite criar objetos chamados Stored Procedure.
Os SGBDs possuem regras estabelecidas para a criação de Stored Procedure. Ao utilizar o MySQL, analise as afirmativas a seguir.
I. Na construção de uma Stored Procedure, o MySQL permite o uso do comando RETURN para retornar ao programa principal o valor do dado tratado.
II. No MySQL, os parâmetros recebidos por uma Stored Procedure podem ser do tipo IN, que informa que somente aceita dados de entrada, OUT, que informa que o parâmetro é utilizado apenas para retorno, ou INOUT, em que o parâmetro é utilizado para entrada e retorno.
III. No MySQL, uma Stored Procedure é finalizada ao utilizar o comando END, uma vez que o sinal de ponto e vírgula delimita o fim da instrução SQL.
Está correto o que se afirma em

Resposta comentada

Gabarito Alternativa E

Uma Stored Procedure (ou Procedimento Armazenado) é um conjunto de comandos SQL pré-compilados e armazenados no banco de dados. Ela funciona como uma função ou rotina que pode ser chamada várias vezes, ajudando a organizar o código, aumentar a performance e a segurança.

  • (A) Incorreta: O comando RETURN em MySQL é usado principalmente em Stored Functions para retornar um valor escalar. Em Stored Procedures, RETURN simplesmente encerra a execução do procedimento, mas não retorna um valor para o chamador da mesma forma que uma função. Para retornar valores de uma Stored Procedure, são utilizados parâmetros do tipo OUT ou INOUT.
  • (B) Incorreta: Esta é a alternativa distratora mais tentadora. Embora o END seja usado para marcar o fim do corpo da Stored Procedure, a instrução CREATE PROCEDURE completa (que inclui o END) é finalizada pelo delimitador de instrução. No MySQL, o delimitador padrão é o ponto e vírgula (;). No entanto, como o corpo da procedure pode conter múltiplos pontos e vírgulas, é comum e necessário mudar temporariamente o delimitador (por exemplo, para $$) antes de criar a procedure e depois resetá-lo. Portanto, a procedure não é "finalizada ao utilizar o comando END, uma vez que o sinal de ponto e vírgula delimita o fim da instrução SQL" de forma direta, pois o ponto e vírgula dentro da procedure seria interpretado como o fim da CREATE PROCEDURE se o delimitador não fosse alterado. O END marca o fim do bloco de código da procedure, mas a instrução CREATE PROCEDURE ... END é encerrada pelo delimitador customizado (ex: END\$$).
  • (C) Incorreta: A afirmativa I está incorreta, como explicado acima.
  • (D) Incorreta: Ambas as afirmativas I e III estão incorretas, como explicado acima.
  • (E) Correta: No MySQL, os parâmetros de uma Stored Procedure podem ser definidos com três modos: IN (apenas para entrada de dados, o valor original não é alterado fora da procedure), OUT (apenas para saída de dados, o valor é retornado ao chamador) e INOUT (para entrada e saída de dados, o valor inicial é lido e o valor final é retornado ao chamador). Esta afirmativa descreve corretamente o funcionamento desses modos de parâmetro.

Fonte: FGV CGE-SC 2022 Auditor do Estado - Ciências da Computação (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