1 / 19

CASE WHEN THEN ELSE END

CASE WHEN THEN ELSE END. Professor Esp. Diego André Sant’Ana E-mail: diego.santana@ifms.edu.br. Disciplina: Banco de Dados II. professordiegosantana.wordpress.com. O que é case. É uma expressão condicional existente no SQL que faz a função similar do if/else. CASE

malaya
Download Presentation

CASE WHEN THEN ELSE END

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CASE WHEN THEN ELSE END Professor Esp. Diego André Sant’Ana E-mail: diego.santana@ifms.edu.br Disciplina: Banco de Dados II professordiegosantana.wordpress.com

  2. O que é case • É umaexpressãocondicionalexistente no SQL quefaz a função similar do if/else. • CASE • WHEN (CONDICAO) THEN (VALOR) • ELSE (VALOR) • END

  3. Exemplo SELECT CASE WHEN A.SEXO='F' THEN 'FEMININO' WHEN A.SEXO='M' THEN 'MASCULINO' ELSE 'INDEFINIDO' END , CASE A.SEXO WHEN 'F' THEN 'FEMININO' WHEN 'M' THEN 'MASCULINO' ELSE 'INDEFINIDO' END FROM ( SELECT 'F' AS SEXO UNION ALL SELECT 'M' UNION ALL SELECT 'I' ) A

  4. Exemplo select NOME_ALUNO, case when idade<18 then 'MENOR DE IDADE' else 'MAIOR DE IDADE' end AS STATUS_IDADE from prova.aluno

  5. Exemplo SELECT CASE WHEN NOME_ALUNO ILIKE 'ANA%' THEN NOME_ALUNO||' IFMS' ELSE NOME_ALUNO END FROM PROVA.ALUNO

  6. Exemplo SELECT IDADE, CASE IDADE%2 WHEN 0 THEN 'PAR' WHEN 1 THEN 'IMPAR' END FROM PROVA.ALUNO

  7. Funções ou procedures Professor Esp. Diego André Sant’Ana E-mail: diego.santana@ifms.edu.br Disciplina: Banco de Dados II professordiegosantana.wordpress.com

  8. Exemplo de funções • As funçõesqueutilizamosquejáexiste e o AVG(),MAX(),MIN(), NOW() e etc.

  9. Estrutura básica • CREATE OR REPLACE FUNCTION nome_da_funcao ( parametros ) •     RETURNS tipo_retorno AS • $$ • DECLARE •       --declaracao de variaveis • BEGIN •       --conteudo da funcao • END; • $$ LANGUAGE linguagem;

  10. Função soma CREATE OR REPLACE FUNCTION get_soma( integer ,integer) RETURNS integer AS $$ DECLARE  soma INTEGER; BEGIN return $1+$2; END; $$ LANGUAGE 'plpgsql'; • select get_soma(2,3)

  11. Função divisão • CREATE OR REPLACE FUNCTION get_divisao ( integer ,integer) RETURNS integer AS • $$ • DECLARE •     soma INTEGER; • BEGIN • return $1/$2; • END; • $$ LANGUAGE 'plpgsql'; • select get_divisao(2,3)

  12. Função IMC • CREATE OR REPLACE FUNCTION get_imc( peso integer ,altura numeric) RETURNS numeric AS • $$ • DECLARE •     soma INTEGER; • BEGIN • return $1/($2*2); • END; • $$ LANGUAGE 'plpgsql'; • select get_imc (2,3)

  13. Crie a tabela • CREATE TABLE usuario ( • id integer NOT NULL, • nm_logincharactervarying, • ds_senhacharactervarying, • fg_bloqueadoboolean, • nu_tentativa_logininteger, • CONSTRAINT pk_usuario PRIMARY KEY (id) • );

  14. Criar a função • CREATE OR REPLACE FUNCTION get_id ( varchar ) RETURNS integer AS • $$ • DECLARE • variavel_id INTEGER; • BEGIN •         SELECT INTO variavel_id id FROM usuario WHERE nm_login = $1; •         RETURN variavel_id; • END; • $$ LANGUAGE 'plpgsql';

  15. Sobre a função • A função acima (chamada get_id) recebe como parâmetro um VARCHAR e retorna um INTEGER, e funciona da seguinte forma: • - declara uma variável chamada variavel_id, do tipo INTEGER; • - faz um select na tabelas de usuário onde a coluna nm_login é igual ao varchar recebido como parâmetro, e colocar o valor de id encontrado dentro da variável variavel_id (através do comandoSELECT INTO); • - retorna a variavel_id. • O $1 representa o primeiro parâmetro recebido, o $2 o segundo, e assim por diante.

  16. Para executar • SELECT get_id( 'joao' );

  17. Exemplo de função • CREATE OR REPLACE FUNCTION set_tentativa_login ( VARCHAR, VARCHAR ) •     RETURNS VOID AS • $$ • DECLARE •         registro RECORD; •         tentativas INTEGER; • BEGIN •         SELECT INTO registro id, fg_bloqueado, nu_tentativa_login FROM usuario WHERE nm_login = $1 AND ds_senha = $2; •         IF registro IS NULL •         THEN •             SELECT INTO tentativas nu_tentativa_login FROM usuario WHERE nm_login = $1; •             tentativas := tentativas + 1; •             IF tentativas > 2 •             THEN •                 UPDATE usuario SET nu_tentativa_login = tentativas, fg_bloqueado = TRUE wherenm_login = $1; •             ELSE •                 UPDATE usuario SET nu_tentativa_login = tentativas wherenm_login = $1; •             END IF; •         ELSE •             UPDATE usuario SET nu_tentativa_login = 0 wherenm_login = $1; •         END IF; • END; • $$ • LANGUAGE 'plpgsql';

  18. Exemplo de chamada login SELECT set_tentativa_login( 'hallan', 'senha_errada' ); SELECT set_tentativa_login( 'maria', 'senha_errada' ); SELECT set_tentativa_login( 'hallan', 'hallan2011' );

  19. REFERÊNCIAS http://blog.hallanmedeiros.com/docencia/banco-de-dados-tutorial/postgresql-funcoes/

More Related