terça-feira, 25 de outubro de 2016

MySQL: Introdução aos Stored Procedure

Stored Procedure são procedimentos/rotinas que são pré-compilados e podem ser usado para manipulação de dados e que podem retornar ou não algum valor. Pense como se fosse uma função/método de alguma linguagem de programação, mas neste caso, seria para o banco de dados. No caso do MySQL, o Stored Procedure está disponível desde a sua versão 5.0.


Sintaxe:

CREATE PROCEDURE nomeDoProcedimento([parametros,...])
[caracteristica]
BEGIN
CorpoDaRotina
END

onde:

  • NomeDoProcedimento: é o nome no qual o procedimento será chamado.
  • [Parametros]: quais parâmetros que o procedimento estará recebendo. Mais abaixo entrarei em detalhes;
  • [caracteristica]: configurações e características especiais que seu procedimento pode ter;
  • CorpodaRotina: é o lugar onde você colocará os códigos de execução. 

Código 01:

CREATE PROCEDURE 'teste'()
BEGIN
  SELECT "Olá mundo";
END


O comando SQL para executar é o CALL. A sintaxe é o seguinte:

CALL nomeDoProcedimento([parametros,...]);

Para o exemplo do código 01, temos o seguinte chamado:

Código 02:

CALL teste();

Como não temos parâmetros, é possível usar o nome do procedimento sem o parênteses.

Parâmetros:
Como dito antes, é possível passar parâmetros para o procedimento. Para isso temos a seguinte sintaxe:

CREATE PROCEDURE nomeDoProcedimento([tipoParam nomeParam tipoDado,...])

onde temos o seguinte:
  • tipoParam: Indica o tipo de parâmetro que vai ser passado. Os tipos podem ser:
    • IN: parâmetro do tipo IN serve somente como entrada de dados para o procedimento;
    • OUT: parâmetros do tipo OUT serve somente para armazenar algum dado que o procedimento gerou para disponibilizar fora dele;
    • INOUT: é a combinação do IN e OUT, ou seja, recebe dados, mas também retorna o novo dado gerado;
  • nomeParam: é o nome pelo qual o parâmetro será indentificado;
  • tipoDado: é o tipo de dado que o parâmetro é. É exatamente igual aos tipos de dados que você define quando cria uma tabela;
Condicional
Também é possível utilizar estrutura condicional para os procedimentos. Veja a sintaxe:

  IF (Condicao) THEN
[procedimento caso verdade]
[ELSE
[procedimento caso false]]
ENDIF

É praticamente igual a quaquer outros IF das linguagens. Apesar da sintaxe ser semelhante ao do Pascal, os operadores padrão C são usados (&&, ||, etc). 

Código 03:

CREATE PROCEDURE 'teste'(IN v_id, IN v_nome VARCHAR(50))
BEGIN
  IF (v_id!='' && v_nome!='') THEN
UPDATE profile SET name=v_nome WHERE id=v_id;
ELSE
SELECT "ID ou Nome não inseridos" AS msg;
ENDIF
END

Variáveis do Usuário
Variáveis do Usuário são declaradas usando o comando SET. 
  SET variavel = "Ola";

Os tipos que uma variável pode receber é Inteiro, Real, String ou NULL. Para atrubuir um valor, podemos usar tanto o "=" quanto o ":=". Caso a variável não tenha sido inicializada, ela terá como valor inicial o NULL. 

Variáveis Locais
Variáveis locais são declaradas da seguinte forma:

DECLARE x TIPO;
Sendo:
  • TIPO: o tipo de dados da variável;
A diferença entre a variável do usuário e variáveis locais são análogos aos das variáveis globais com as locais das linguagens de programação tradicional, entretanto, como o nome das variáveis do usuário, essa estará somente disponível para o usuário que a declarou, sendo que outros usuários do banco de dados não terá acesso a ela.
 

Nenhum comentário:

Postar um comentário