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
AII e III, apenas.
BIII, apenas.
CI e II, apenas.
DI e III, apenas.
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.
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.