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.