Variáveis com SQL - Declare e Select INTO

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (2)  (0)

Recupere dados do banco incrementando variáveis em seu comando SQL, evitando várias procedures para conseguir o mesmo resultado!

   É comum ver aplicações cujo o seu banco possui um grande número de procedures. Tudo bem se essas serem uma para cada funcionalidade, mas se temos de fazer um SELECT avançado, como vou mostrar no exemplo, muitos escolhem criar várias procedures para um objetivo. Neste artigo estarei mostrando exemplos de criação de variáveis no MySql 5, o mesmo prosegue para outros bancos como MS SQL Server, entre outros.

   Em uma aplicação existe um banco de dados onde neste existe uma tabela de clientes, esta tabela possui os respectivos campos:

  • CustumerID(integer-primarykey-autoincrement);
  • Name(varchar(50));
  • CustumerType(integer);

   Ignorando a existência de uma tabela que relaciona os tipos de clientes (CustumerType), cuja finalidade é interpretar cada cliente conforme o seu tipo, por exemplo, neste tabela no campo CustumerType, consideremos que o valor: 0 equivale a um cliente normal, que 1 equivale a um cliente VIP, que 2 equivale a um cliente Special e finalmente 3 equivalendo a um cliente Ultra Special.
   A seguinte tarefa foi proposta aos desenvolvedores, a empresa queria resgatar um cliente, descrevendo  o seu tipo e por último seu juros conforme o tipo de cliente.

   O código SQL abaixo resgata facilmente o que foi requerido, nele uso várias tecnologias, umas novas para os mais novatos e outras super conhecidas para o mesmo. São elas:

DECLARE- Declara uma variável, prosseguida do tipo que vai ser, ex: varchar(45);
SELECT INTO - Faz um select e o preenche em uma variável, ex: Select a,b INTO d,e... sendo d,e variáveis declaradas


DELIMITER $$
CREATE  PROCEDURE
`Devmedia_SelectCustumer`(IN _ID INT)
BEGIN
  DECLARE _Type INT;
  SELECT CustumerType INTO _Type FROM Custumers WHERE CustumerID = _ID;

  CASE _Type
    WHEN  0 THEN
        SELECT
            CustumerName,
            CLiente normal,
            1.5% de juros,
        FROM
            Custumers
        WHERE
             CustumerID = _ID;
    WHEN 1 THEN
        SELECT
            CustumerName,
            CLiente VIP,
            1.1% de juros,
        FROM
            Custumers
        WHERE
             CustumerID = _ID;
    WHEN 2 THEN
        SELECT
            CustumerName,
            CLiente Special,
            0.8% de juros,
        FROM
            Custumers
        WHERE
             CustumerID = _ID;
    WHEN 3 THEN
        SELECT
            CustumerName,
            CLiente ULTRA Special,
            0.5% de juros,
        FROM
            Custumers
        WHERE
             CustumerID = _ID;
  END CASE;

END 
$$
DELIMITER ;

   

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?