Pular para o conteúdo principal

Questão de Banco de Dados — MySQL — FGV 2023

Banco de DadosMySQL
Código
fg060694
Banca
FGV
Órgão
CGE-SC
Ano
2023
Nível
Superior
Cargo
Auditor do Estado - Ciências da Computação - Tarde (Conhecimentos Específicos)
É 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
  1. AII e III, apenas.
  2. BIII, apenas.
  3. CI e II, apenas.
  4. DI e III, apenas.
  5. EII, apenas.
Revelar gabarito e comentário

GabaritoE — II, apenas.

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 MySQL

Gabarito: letra E. Apenas a afirmativa II está correta. O MySQL realmente suporta os três modos de parâmetro (IN, OUT, INOUT) para stored procedures, conforme descrito. A afirmativa I é falsa porque o comando RETURN é usado em funções, não em procedures, para retornar um valor; em procedures, o retorno é feito por parâmetros OUT/INOUT. A afirmativa III é falsa pois, embora END finalize o corpo da procedure, o ponto e vírgula não delimita o fim da definição da procedure — é necessário alterar o delimitador padrão para evitar conflitos com os comandos internos.

1Parâmetros
IN (entrada, padrão)
OUT (saída)
INOUT (entrada e saída)
2Retorno
RETURN (exclusivo de função)
Parâmetros OUT/INOUT
3Delimitador
Ponto e vírgula separa comandos internos
DELIMITER $$ define fim da procedure
Stored Procedure (MySQL)
LEVELsoulevel.com.br
Stored Procedure (MySQL): Parâmetros (IN (entrada, padrão), OUT (saída), INOUT (entrada e saída)); Retorno (RETURN (exclusivo de função), Parâmetros OUT/INOUT); Delimitador (Ponto e vírgula separa comandos internos, DELIMITER $$ define fim da procedure)

Item I — ❌ Incorreto

No MySQL, stored procedures não utilizam o comando RETURN para devolver valores ao chamador. O RETURN é exclusivo de stored functions. Em procedures, a comunicação com o exterior ocorre exclusivamente por meio de parâmetros dos tipos OUT ou INOUT. Assim, a afirmação está errada.

Item II — ✅ Correto

A sintaxe do MySQL permite declarar parâmetros com os modos IN (entrada, padrão), OUT (saída, o parâmetro pode ser modificado e seu valor final enviado ao chamador) e INOUT (combina entrada e saída). Essa é a definição correta e amplamente documentada.

Item III — ❌ Incorreto

Embora o comando END marque o término do corpo da stored procedure, a afirmação sobre o ponto e vírgula é enganosa. Na criação de uma procedure, o ponto e vírgula é usado para separar comandos SQL dentro do bloco BEGIN...END. Para que o interpretador MySQL entenda onde termina a instrução CREATE PROCEDURE como um todo, é necessário alterar o delimitador (ex.: DELIMITER $$) antes da criação e restaurá-lo após. Portanto, o ponto e vírgula não delimita o fim da procedure.

Conclusão: Apenas o item II está correto, o que corresponde à alternativa E.

PEGA ESSA DICA!

Memorize os modos de parâmetro (IN, OUT, INOUT) e lembre-se de que RETURN é de função, não de procedure. Na prova, desconfie de afirmações que generalizam o uso do ponto e vírgula como delimitador final de definições de objetos.

Link permanente: /questoes/fg060694