A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

CASE WHEN THEN ELSE END Professor Esp. Diego André Sant’Ana Disciplina: Banco de Dados II professordiegosantana.wordpress.com.

Apresentações semelhantes


Apresentação em tema: "CASE WHEN THEN ELSE END Professor Esp. Diego André Sant’Ana Disciplina: Banco de Dados II professordiegosantana.wordpress.com."— Transcrição da apresentação:

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 É uma expressão condicional existente no SQL que faz 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ções que utilizamos que já 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_login character varying, ds_senha character varying, fg_bloqueado boolean, nu_tentativa_login integer, 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 where nm_login = $1; ELSE UPDATE usuario SET nu_tentativa_login = tentativas where nm_login = $1; END IF; ELSE UPDATE usuario SET nu_tentativa_login = 0 where nm_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/ba nco-de-dados-tutorial/postgresql-funcoes/


Carregar ppt "CASE WHEN THEN ELSE END Professor Esp. Diego André Sant’Ana Disciplina: Banco de Dados II professordiegosantana.wordpress.com."

Apresentações semelhantes


Anúncios Google