Prévia do material em texto
Linguagem Procedural Tipos de dados e declarações PROF. Ms. J FLÁVIO VASCONCELOS ALVES ASSUNTOS AULA 2 2 1)Tipos de dados PL/SQL 2)Declarações 3)Number, date 4)Character 5)Boolean Obs: Efetuar cadastro em https://livesql.oracle.com/ 3 Seções (PUGA;FRANÇA; GOAYA, 2013) Seção Descrição Seção Declarativa Variáveis, cursores, exceções e tipos construídos devem ser declarados. Seção Executável Obrigatória na construção de um bloco. È o conjunto de instruções. Seção de Tratamento de Exceções Quando houver necessidade de tratamento de exceções. 4 PL/SQL – exemplo 1 (PUGA;FRANÇA; GOAYA, 2013) Declaração de variáveis Área de escopo Tratamento de erros 5 TIPOS DE DADOS – seção DECLARATIVA As variáveis são utilizadas para armazenar dados temporariamente podendo sofrer alte- rações ao longo do processamento do bloco. A declaração a inicialização das variáveis são fei as na seção declarativa do bloco. As declarações tem como finalidade alocar espaço de armazenamento para um valor, especificar seu tipo de dados e nomear a localização de armazenamento (em memória), para que se possa referenciá-los. (PUGA;FRANÇA; GOAYA, 2013) 6 TIPOS DE DADOS – CONSTANTES As constantes, assim como as variáveis, devem ser declaradas na seção declarativa, mas tem seus valores predefinidos na declaração e não podem ser alterados ao longo do processamento. (PUGA;FRANÇA; GOAYA, 2013) 7 CATEGORIAS DE TIPOS DE DADOS As variáveis em linguagem PL/SQL suportam 4 categorias de tipos de dados. (PUGA;FRANÇA; GOAYA, 2013) ESCALARES COMPOSTOS REFERENCIAIS LOB (large object) 8 ESCALARES p1 Armazena um valor único e não possue componentes internos. Os tipos de dados escalares podem ser classificados em 4 categorias: • Número • Caracter • Data • Boleano (PUGA;FRANÇA; GOAYA, 2013) 9 ESCALARES p2 (PUGA;FRANÇA; GOAYA, 2013) TIPO DE DADO DESCRIÇÃO VARCHAR2 Armazena caractere de tamanho variável, com até 32.767 bytes. Não há tamanho default para estas variáveis. NUMBER Armazena números reais ou inteiros DATE Armazena datas e horas, entre os períodos de 4.712 A.C e 9.999 D.C CHAR Armazena caractere de tamanho fixo, com até 32.767 bytes. O tamanho default é 1 byte. BOOLEAN Armazena TRUE, FALSE ou NULL 10 COMPOSTOS Comportam o armazenamento de diferentes valores. Os tipos compostos em PL/SQL são: • Registros • Tabelas • Matrizes (PUGA;FRANÇA; GOAYA, 2013) 11 REFERENCIAIS Armazenam valores chamados de indicadores, que designam outros itens de programa. Um exemplo do tipo referencial é o CURSOR. (PUGA;FRANÇA; GOAYA, 2013) 12 LOB (LARGE OBJECT) Armazena blocos de dados não estruturados, como textos, imagens gráficas, videoclipes e formatos de arquivos para armazenar sons com até 4 gigabytes. Também fornecem acesso eficiente, aleatório e em intervalo aos dados, podendo ser atributos de um tipo de objeto. (PUGA;FRANÇA; GOAYA, 2013) 13 CLASSIFICAÇÃO DAS VAR LOBs (PUGA;FRANÇA; GOAYA, 2013) CLOB BLOB BFILE 14 CLOB Armazena blocos grandes de dados com caracteres de um único byte no banco de dados. (PUGA;FRANÇA; GOAYA, 2013) 15 BLOB Armazena objetos binários grandes no banco de dados, em linha (dentro de uma linha da tabela) ou fora de linha (fora da linha da tabela). (PUGA;FRANÇA; GOAYA, 2013) 16 BFILE Armazena objetos binários grandes em arquivos do sistema operacional, fora do Banco de Dados. (PUGA;FRANÇA; GOAYA, 2013) 17 SINTAXE para DECLARACAO de variaveis identificador [CONSTANT] {tipo de dados I tabela%coluna type I variável%type)} [NOT NULL] [ : = valor para inicializacão I expr default] (PUGA;FRANÇA; GOAYA, 2013) ELEMENTOS e FUNCIONALIDADES identificador Nome da variável CONSTANT A constante deve ser obrigatoriamente inicializada. tipo de dados Determina o tipo de dado que a variável ou a constante armazenará %type Declara variáveis com a mesma coluna ou de uma variável já existente NOT NULL Determina ser de preenchimento obrigatório expr Valor para inicialização de uma variável ou constante. Pode ser uma literal, outra variável, ou uma expressão que envolve operadores ou funções. 18 EXEMPLO 1 number declare soma number; begin soma := 2**2; dbms_output.put_line('Soma=' || soma); end; (PUGA;FRANÇA; GOAYA, 2013) 19 EXEMPLO 2 date declare v_nascimento date; v_data date := sysdate + 7; begin v_nascimento:= TO_DATE ('26-JAN-1972'); dbms_output.put_line('Nascido em ' || v_nascimento); dbms_output.put_line('Hoje mais 7 dias ' || v_data); end; (PUGA;FRANÇA; GOAYA, 2013) 20 EXEMPLO 3 number inicializado declare v_valor number(7) not null := 10; begin v_valor := v_valor * 2340; dbms_output.put_line('Valor =' || v_valor); end; (PUGA;FRANÇA; GOAYA, 2013) 21 EXEMPLO 4 varchar2 declare v_uf varchar2(2) := 'CE'; begin dbms_output.put_line('Estado =' || v_uf); end; (PUGA;FRANÇA; GOAYA, 2013) 22 EXEMPLO 4 varchar2 default declare v_uf varchar2(2) := 'CE'; v_uf2 varchar2(2) default 'RN'; begin dbms_output.put_line('Estado =' || v_uf); dbms_output.put_line('Estado padrao =' || v_uf2); end; (PUGA;FRANÇA; GOAYA, 2013) 23 EXEMPLO 5 boolean declare v_teste_logico boolean := (347>56); soma number; begin IF (v_teste_logico) THEN dbms_output.put_line('Valor da expressao = VERDADEIRO'); END IF; end; (PUGA;FRANÇA; GOAYA, 2013) 24 EXEMPLO 6 CONSTANTES declare v_constante constant number := (3.14); begin dbms_output.put_line('Valor da constante =' || v_constante); end; (PUGA;FRANÇA; GOAYA, 2013) 25 PL/SQL – exemplo banco de dados (PUGA;FRANÇA; GOAYA, 2013) create table fatura( nro_venda number(10)not null, vlr_fatura number(10), primary key (nro_venda)) SELECT * from fatura; INSERT INTO fatura VALUES (1,1000); INSERT INTO fatura VALUES (1,2000); INSERT INTO fatura VALUES (1,3000); SELECT * from fatura; 26 PL/SQL – exemplo banco de dados (PUGA;FRANÇA; GOAYA, 2013) DECLARE v_maior number(10,2); v_menor number(10,2); v_media number(10,2); BEGIN SELECT MAX(vlr_fatura), MIN(vlr_fatura), AVG(vlr_fatura) INTO v_maior, v_menor, v_media FROM fatura; dbms_output.put_line('Valor maior fatura =' || v_maior); END; 27 PL/SQL – exemplo2 banco de dados (PUGA;FRANÇA; GOAYA, 2013) DECLARE v_maior number(10,2); v_menor number(10,2); v_media number(10,2); BEGIN SELECT MAX(vlr_fatura), MIN(vlr_fatura), AVG(vlr_fatura) INTO v_maior, v_menor, v_media FROM fatura; dbms_output.put_line('Valor maior fatura =' || v_maior); dbms_output.put_line('Valor menor fatura =' || v_menor); dbms_output.put_line('Valor media das fatura =' || v_media); END; 28 EXEMPLO 7 %type declare v_constante constant number := (3.14); v_const2 v_constante%type := (3/4); begin dbms_output.put_line('Valor da constante =' || v_constante); dbms_output.put_line('Valor da constante2 =' || v_const2); end; (PUGA;FRANÇA; GOAYA, 2013) MODIFICANDO DONO ou GRUPO 29 OBRIGADO !!! ZAP 9750-2901 @profjsflavioalves