Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Programação em Oracle - Apostilas - Informática Part1, Notas de estudo de Informática

Apostilas de Informática sobre Oracle PL/SQL, Interagindo com o usuário, PL/SQL e tráfego de rede, Estrutura do bloco PL/SQL, Blocos aninhados, Identificadores, Subtipos definidos pelo usuário, Convertendo entre tipos de dados.

Tipologia: Notas de estudo

2013

Compartilhado em 27/08/2013

Garoto
Garoto 🇪🇸

4.6

(121)

1 / 61

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
PROGRAMANDO EM ORACLE 9i
PL/SQL
Desenvolvida Por:
Rondinele Santos de Morais
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d

Pré-visualização parcial do texto

Baixe Programação em Oracle - Apostilas - Informática Part1 e outras Notas de estudo em PDF para Informática, somente na Docsity!

PROGRAMANDO EM ORACLE 9i

PL/SQL

Desenvolvida Por:

Rondinele Santos de Morais

  • INTRUDUÇÃO À LINGUAGEM PL/SQL.........................................................................
    • Interagindo com o usuário ................................................................................................
    • PL/SQL e tráfego de rede .................................................................................................
    • Estrutura do bloco PL/SQL...............................................................................................
    • Blocos aninhados ..............................................................................................................
    • Identificadores ..................................................................................................................
    • Literais ..............................................................................................................................
    • Comentários ......................................................................................................................
    • Declaração de variável......................................................................................................
    • Tipos PL/SQL ...................................................................................................................
      • Character Datatype .......................................................................................................
      • Numeric Datatype .........................................................................................................
      • Date Datatype ...............................................................................................................
      • LOB Datatypes .............................................................................................................
      • Outros Datatypes...........................................................................................................
      • Tipo booleano ...............................................................................................................
      • Tipos compostos ...........................................................................................................
      • Tipos de referencia........................................................................................................
      • Tipos de objeto..............................................................................................................
    • Utilizando %TYPE ...........................................................................................................
    • Subtipos definidos pelo usuário........................................................................................
    • Convertendo entre tipos de dados.....................................................................................
    • Escopo de variável e visibilidade......................................................................................
    • Operadores ........................................................................................................................
    • Expressões booleanas .......................................................................................................
    • Estruturas de controle PL/SQL .........................................................................................
      • IF-THEN- ELSE ...........................................................................................................
      • CASE ............................................................................................................................
      • Loops while...................................................................................................................
      • Loops FOR numéricos ..................................................................................................
      • GOTOs e rótulos...........................................................................................................
      • Rotulando LOOPs.........................................................................................................
    • NULO como uma instrução..............................................................................................
    • Registros PL/SQL .............................................................................................................
    • Utilizando %ROWTYPE ..................................................................................................
  • SQL DENTRO DA LINGUAGEM PL/SQL .......................................................................
    • Select.................................................................................................................................
    • Insert .................................................................................................................................
    • Update...............................................................................................................................
    • Delete ................................................................................................................................
    • A cláusula RETURNING .................................................................................................
    • Referências de tabelas.......................................................................................................
    • Database Links..................................................................................................................
    • Sinônimos .........................................................................................................................
    • Controle de transações ......................................................................................................
    • Transações versus blocos..................................................................................................
    • Transações autônomas ......................................................................................................
    • Privilégios: GRANT e REVOKE .....................................................................................
    • Roles .................................................................................................................................
  • TRATAMENTO DE ERROS...............................................................................................
    • O que é uma exceção ........................................................................................................
    • Tipos de erros PL/SQL .....................................................................................................
    • Declarando Exceções........................................................................................................
    • Exceções definidas pelo usuário .......................................................................................
    • Exceções predefinidas.......................................................................................................
    • Exceções predefinidas pelo Oracle ...................................................................................
    • Levantando exceções ........................................................................................................
    • Tratando exceções.............................................................................................................
    • O handler de exceção OTHERS ......................................................................................
    • SQLCODE e SQLERRM .................................................................................................
    • O pragma EXCEPTION_INIT .........................................................................................
    • Utilizando RAISE_APPLICATION_ERROR .................................................................
    • Exceções levantadas na seção de exceção ........................................................................
  • FUNÇÕES SQL PREDEFINIDAS ......................................................................................
    • Funções de caractere que retornam valores de caracteres ................................................
      • CHR (x[using nchar_cs]) ..............................................................................................
      • CONCAT (string1, string2) ..........................................................................................
      • INITCAP (string)..........................................................................................................
      • LOWER (string) ...........................................................................................................
      • LPAD (String1, x[string2])...........................................................................................
      • LTRIM (String1,String2)..............................................................................................
      • REPLACE (string, string_a_pesquisar [string_substituta])..........................................
      • RPAD (string1, x, [string2]) .........................................................................................
      • TRANSLATE (string, str_de, str_para)........................................................................
      • TRIM([{{LEADING|TRAILING|BOTH}[aparar_char])|aparar_char}FROM]string)
      • UPPER (string) .............................................................................................................
      • SUBSTR .......................................................................................................................
      • SOUNDEX ...................................................................................................................
    • Funções de caractere que retornam valores numéricos.....................................................
      • ASCII (string) ...............................................................................................................
      • INSTR (string1,string2 [,a] [,b]) ...................................................................................
      • LENGTH (string)..........................................................................................................
      • INSTR ...........................................................................................................................
      • LENGTH ......................................................................................................................
    • Funções de NLS................................................................................................................
      • CONVERT (string, conjunto_de_caracteres_dest[,conjunto_de_caracteres_orig]).....
      • NCHR(x).......................................................................................................................
      • NLS_CHARSET_DECL_LEN ....................................................................................
      • NLS_CHARSET_ID ....................................................................................................
      • NLS_CHARSET_NAME.............................................................................................
      • NLS_INITCAP .............................................................................................................
      • NLS_LOWER...............................................................................................................
      • NLS_UPPER ................................................................................................................
    • NLSSORT.....................................................................................................................
    • TRANSLATE ...............................................................................................................
    • UNISTR(s)....................................................................................................................
  • Funções Numéricas...........................................................................................................
    • ABS(x) ..........................................................................................................................
    • ACOS(x) .......................................................................................................................
    • ASIN(x) ........................................................................................................................
    • ATAN(x).......................................................................................................................
    • ATAN2 (x,y).................................................................................................................
    • BITAND(x,y)................................................................................................................
    • CEIL(x).........................................................................................................................
    • COS(x) ..........................................................................................................................
    • COSH(x) .......................................................................................................................
    • EXP(x) ..........................................................................................................................
    • FLOOR(x).....................................................................................................................
    • LN(x) ............................................................................................................................
    • LOG (x,y)......................................................................................................................
    • MOD(x,y) .....................................................................................................................
    • POWER(x,y).................................................................................................................
    • ROUND(x[,y]) ..............................................................................................................
    • SIGN(x) ........................................................................................................................
    • SIN(x) ...........................................................................................................................
    • SINH(x) ........................................................................................................................
    • SQRT(x)........................................................................................................................
    • TAN(x)..........................................................................................................................
    • TANH(x).......................................................................................................................
    • TRUNC (x,[,y]).............................................................................................................
    • WIDTH_BUCKET .......................................................................................................
  • Funções de data e hora......................................................................................................
    • ADD_MONTHS(d,x) ...................................................................................................
    • CURRENT_DATE .......................................................................................................
    • CURRENT_TIMESTAMP...........................................................................................
    • DBTIMEZONE ............................................................................................................
    • LAST_DAY..................................................................................................................
    • LOCALTIMESTAMP ..................................................................................................
    • MONTHS_BETWEEN ................................................................................................
    • NEW_TIME (d, zona1,zona2)......................................................................................
    • NEXTDAY ...................................................................................................................
    • ROUND (d[,formato]) ..................................................................................................
    • SESSIONTIMEZONE..................................................................................................
    • SYS_EXTRACT_UTC.................................................................................................
    • SYSDATE ....................................................................................................................
    • SYSTIMETAMP ..........................................................................................................
    • TRUNC (d,[,formato]) ..................................................................................................
    • TZ_OFFSET(fuso horário) ...........................................................................................
  • Funções de conversão .......................................................................................................
    • ASCIISTR (string)........................................................................................................
      • BIN_TO_NUM (num[,num]...) ....................................................................................
      • CHARTOROWID ........................................................................................................
      • COMPOSE....................................................................................................................
      • DECOMPOSE ..............................................................................................................
      • FROM_TZ (timestamp,fuso horário) ...........................................................................
      • HEXTORAW................................................................................................................
      • NUMTODSINTERVAL...............................................................................................
      • NUMTOYMINTERVAL .............................................................................................
      • REFTOHEX..................................................................................................................
      • RAWTOHEX................................................................................................................
      • RAWTONHEX.............................................................................................................
      • ROWIDTOCHAR ........................................................................................................
      • ROWIDTONCHAR......................................................................................................
      • TO_CHAR (datas e horas)............................................................................................
      • TO_CHAR (Números)..................................................................................................
      • TO_DATE ....................................................................................................................
      • TO_NUMBER ..............................................................................................................
      • TO_TIMESTAMP e TO_TIMESTAMP_TZ...............................................................
    • Funções de grupo ..............................................................................................................
      • AVG ([DISTINCT|ALL] col).......................................................................................
      • COUNT (*|[DISTINCT|ALL]col)................................................................................
      • GROUP_ID() ................................................................................................................
      • GROUPING..................................................................................................................
      • GROUPING_ID............................................................................................................
      • MAX([DISTINCT|ALL]col) ........................................................................................
      • MIN([DISTINCT|ALL]col)..........................................................................................
      • STDDEV ([DISTINCT|ALL]col).................................................................................
      • SUM([DISTINCT|ALL]col).........................................................................................
    • Outras funções ..................................................................................................................
      • BFILENAME (diretório nome_de_arquivo) ................................................................
      • COALESCE..................................................................................................................
      • DECODE (expressão_de_base, comparação1,valor1,comparação2,valor2...padrão) ..
      • EMPTY_BLOB/EMPTY_CLOB .................................................................................
      • GREATEST (expr1 [,expr2])... ....................................................................................
      • LEAST (expr1 [,expr2])… ...........................................................................................
      • NULLIF (a,b)................................................................................................................
      • NVL (expr1,expr2) .......................................................................................................
      • NVL2 (expr1,expr2,expr3) ...........................................................................................
      • SYS_CONNECT_BY_PATH ......................................................................................
      • SYS_CONTEXT ..........................................................................................................
      • SYS_GUID ...................................................................................................................
      • SYS_TYPEID (tipo_de_objecto) .................................................................................
      • TREAT (expr AS [REF] [esquema.]tipo )....................................................................
      • UID ...............................................................................................................................
      • USER ............................................................................................................................
      • DUMP ...........................................................................................................................
  • CURSORES..........................................................................................................................
    • Cursores explícitos............................................................................................................
    • Parâmetros de cursor.........................................................................................................
    • Atributos de cursor............................................................................................................
    • Cursores implícitos ...........................................................................................................
    • Loops de Busca de Cursores.............................................................................................
      • Loop Simples ................................................................................................................
      • Loops WHILE...............................................................................................................
      • Loops FOR de cursor....................................................................................................
      • Loops FOR implícitos...................................................................................................
    • NO_DATA_FOUND versus %NOTFOUND ..................................................................
    • Cursores SELECT FOR UPDATE ...................................................................................
      • FOR UPDATE..............................................................................................................
      • WHERE CURRENT OF ..............................................................................................
      • COMMIT dentro de um Loop de cursor FOR UPDATE .............................................
    • Variáveis de cursor ...........................................................................................................
  • COLEÇÕES..........................................................................................................................
    • Tabelas Index-by...............................................................................................................
      • Elementos inexistentes..................................................................................................
      • Tabelas index-by de tipos compostos ...........................................................................
      • Tabelas index-by de registros .......................................................................................
      • Tabelas index-by de tipos de objeto..............................................................................
    • Tabelas aninhadas (Nested tables)....................................................................................
      • Inicialização de uma tabela aninhada ...........................................................................
      • Tabelas vazias ...............................................................................................................
      • Adicionando elementos a uma tabela existente ............................................................
    • VARRAYS .......................................................................................................................
      • Inicialização de varray ..................................................................................................
      • Manipulando os elementos de um varray .....................................................................
    • Coleções de múltiplos níveis ............................................................................................
    • Coleções no banco de dados .............................................................................................
      • A estrutura de varrays armazenados .............................................................................
      • Estrutura das tabelas aninhadas armazenadas...............................................................
    • Manipulando coleções inteiras..........................................................................................
      • INSERT ........................................................................................................................
      • UPDATE.......................................................................................................................
      • DELETE .......................................................................................................................
      • SELECT........................................................................................................................
    • Operadores de tabela SQL ................................................................................................
    • Métodos de coleção ..........................................................................................................
      • EXISTS .........................................................................................................................
      • COUNT.........................................................................................................................
      • LIMIT ...........................................................................................................................
      • FIRST e LAST..............................................................................................................
      • NEXT e PRIOR ............................................................................................................
      • EXTEND ......................................................................................................................
      • TRIM ............................................................................................................................
      • DELETE .......................................................................................................................
  • CRIANDO PROCEDURES, FUNÇÕES E PACOTES.....................................................
    • Procedures e funções ......................................................................................................
    • Criação de subprograma .................................................................................................
    • Criando uma procedure...................................................................................................
      • Corpo da procedure.....................................................................................................
    • Criando uma função........................................................................................................
      • A instrução RETURN .................................................................................................
    • Eliminando procedures e funções ...................................................................................
    • Parâmetros de subprograma............................................................................................
      • Modo de parâmetro .....................................................................................................
      • Passando valores entre parâmetros formais e reais.....................................................
      • Literais ou constantes como parametros reais ............................................................
      • Lendo de parâmetros OUT .........................................................................................
      • Restrições quanto aos parâmetros formais..................................................................
      • Parâmetros de %TYPE e de procedure.......................................................................
    • Exceções levantadas dentro de subprogramas ................................................................
    • Passando parâmetro por referência e por valor...............................................................
      • Utilizando o NOCOPY ...............................................................................................
      • Semântica de exceção com NOCOPY........................................................................
      • Restrições de NOCOPY..............................................................................................
      • Os benefícios de NOCOPY ........................................................................................
    • Subprogramas sem parâmetros .......................................................................................
    • Notação posicional e identificada ...................................................................................
    • Valores padrão do parâmetro ..........................................................................................
    • A instrução CALL ..........................................................................................................
    • Procedures versus funções ..............................................................................................
    • Pacotes ............................................................................................................................
    • Especificação de pacote ..................................................................................................
      • Corpo de pacote ..........................................................................................................
      • Pacotes e escopo .........................................................................................................
      • Escopo de objetos no corpo do pacote........................................................................
      • Sobrecarregando subprogramas empacotados ............................................................
      • Inicialização do pacote................................................................................................
  • UTILIZANDO PROCEDURES, FUNÇÕES E PACOTES...............................................
    • Localizações do subprograma.........................................................................................
    • Subprogramas armazenados e o dicionário de dados .....................................................
    • Compilação nativa ..........................................................................................................
    • Subprogramas locais .......................................................................................................
    • Subprogramas locais como parte de subprogramas armazenados ..................................
    • Localização de subprogramas locais...............................................................................
    • Declarações prévias ........................................................................................................
    • Sobrecarregando subprogramas locais............................................................................
    • Subprogramas locais versus armazenados ......................................................................
    • Considerações sobre subprogramas e pacotes armazenados ..........................................
    • Recompilação automática ...............................................................................................
    • Pacotes e dependências ...................................................................................................
    • Como as invalidações são determinadas.........................................................................
    • Estado em tempo de execução de pacote........................................................................
    • Privilégios e subprogramas armazenados .......................................................................
    • Privilégio EXECUTE .....................................................................................................
    • Direito do chamador versus direito do definidor ............................................................
    • Triggers, visualizações e direitos do chamador ..............................................................
    • Utilizando funções armazenadas em instruções SQL.....................................................
    • Níveis de pureza para as funções ....................................................................................
    • Chamando funções armazenadas a partir da SQL no Oracle8 i .......................................
    • Chamando funções a partir de instruções de DML.........................................................
    • Fixando no pool compartilhado ......................................................................................
      • KEEP ..........................................................................................................................
      • UNKEEP.....................................................................................................................
      • SIZES..........................................................................................................................
      • ABORTED_REQUEST_THRESHOLD....................................................................
  • TRIGGERS DE BANCO DE DADOS ..............................................................................
    • Sintaxe para criação de triggers ......................................................................................
    • Criando triggers de DML................................................................................................
    • Identificadores de correlação em triggers de nível de linha ...........................................
    • Cláusula REFERENCING ..............................................................................................
    • A cláusula WHEN ..........................................................................................................
    • Predicados de trigger: INSERTING, UPDATING e DELETING .................................
    • Criandos triggers Insead-of.............................................................................................
    • Criando triggers de sistema.............................................................................................
    • Triggers de banco de dados versus esquema ..................................................................
    • Funções do atributo de evento ........................................................................................
    • Corpos de triggers...........................................................................................................
    • Privilégios de trigger.......................................................................................................
    • Views do dicionário de dados.........................................................................................
    • Descartando e desativando triggers ................................................................................
    • Tabelas que sofrem mutação...........................................................................................
  • RECURSOS AVANÇADOS..............................................................................................
    • SQL Dinâmica nativa......................................................................................................
    • Consultas com EXECUTE IMMEDIATE......................................................................
    • Executando consultas com cursores utilizando OPEN FOR ..........................................
    • Vinculação em volume ...................................................................................................
      • Questões transacionais................................................................................................
    • A cláusula BULK COLLECT.........................................................................................
    • Tipos de objeto................................................................................................................
    • Armazenando objetos no banco de dados.......................................................................
    • Referências de objeto......................................................................................................
  • Funções de tabela em pipeline ............................................................................................
    • Pacotes avançados...........................................................................................................
      • DBMS_SQL................................................................................................................
      • DBMS_PIPE...............................................................................................................
      • DBMS_ALERT ..........................................................................................................
      • UTL_FILE ..................................................................................................................
      • UTL_TCP ...................................................................................................................
  • UTL_SMTP ................................................................................................................
  • UTL_HTTP.................................................................................................................
  • UTL_INADDR ...........................................................................................................
  • DBMS_JOB ................................................................................................................
  • DBMS_LOB ...............................................................................................................

INTRUDUÇÃO À LINGUAGEM PL/SQL

PL/SQL é uma linguagem de programação sofisticada utilizada para acessar um banco de dados Oracle a partir de vários ambientes. ElAé integrada com o serviror do banco de dados de modo que o código PL/SQL possa ser processado de maneira rápida e eficiente. Essa linguagem também está disponível em algumas ferramentas Oracle do lado do cliente. Em linhas gerais, a PL/SQL (Procedural Language/SQL) combina o poder e flexibilidade da SQL com as construções procedurais de uma linguagem de 3ª geração.

Interagindo com o usuário

A PL/SQL não tem nenhuma funcionalidade de entrada ou de saída construída diretamente na linguagem. Para retificar isso, o SQL*Plus, em combinação com o pacote DBMS_OUTPUT, fornece a capacidade de dar saída para mensagens em tela. Isso é feito em dois passos:

  1. Permitir a saída no SQL*Plus com o comando set serveroutput on : SET SERVEROUTPUT {ON | OFF} [SIZE n]

Onde o n é o tamanho do buffer de saída. Seu valor padrão é 2.000 bytes

  1. Dentro do seu programa PL/SQL, utilize a procedure DBMS_OUTPUT.PUT_LINE(msg).

Exemplo:

SQL> SET SERVEROUTPUT ON SQL> begin 2 DBMS_OUTPUT.PUT_LINE('Teste de pl/sql!!!'); 3 end; 4 / Teste de pl/sql!!!

PL/SQL procedure successfully completed.

PL/SQL e tráfego de rede

No modelo cliente/servidor, o próprio programa reside na máquina cliente e envia solicitações de informações para um servidor de banco de dados. As solicitações são feitas utilizando SQL. Em geral, isso resulta em várias viagens pele rede, uma para cada instrução SQL, diferente do uso da PL/SQL que pode estar armazenada no banco de dados ou mesmo permitir que vários comandos SQL sejam empacotados em bloco PL/SQL e enviados ao servidor como uma única unidade.

VALUES (v_Num1, v_String1); INSERT INTO temp_table (num_col, char_col) VALUES (v_Num2, v_String2);

/* Now query temp_table for the two rows we just inserted, and output them to the screen using the DBMS_OUTPUT package. */ SELECT char_col INTO v_OutputStr FROM temp_table WHERE num_col = v_Num1; DBMS_OUTPUT.PUT_LINE(v_OutputStr);

SELECT char_col INTO v_OutputStr FROM temp_table WHERE num_col = v_Num2; DBMS_OUTPUT.PUT_LINE(v_OutputStr);

/* Rollback our changes */ ROLLBACK; END; /

REM BLOCO ANONIMO ROTULADO <<l_InsertIntoTemp>> DECLARE /* Declare variables to be used in this block. / v_Num1 NUMBER := 1; v_Num2 NUMBER := 2; v_String1 VARCHAR2(50) := 'Hello World!'; v_String2 VARCHAR2(50) := '-- This message brought to you by PL/SQL!'; v_OutputStr VARCHAR2(50); BEGIN / First, insert two rows into temp_table, using the values of the variables. */ INSERT INTO temp_table (num_col, char_col) VALUES (v_Num1, v_String1); INSERT INTO temp_table (num_col, char_col) VALUES (v_Num2, v_String2);

/* Now query temp_table for the two rows we just inserted, and output them to the screen using the DBMS_OUTPUT package. */

SELECT char_col INTO v_OutputStr FROM temp_table WHERE num_col = v_Num1; DBMS_OUTPUT.PUT_LINE(v_OutputStr);

SELECT char_col INTO v_OutputStr FROM temp_table WHERE num_col = v_Num2; DBMS_OUTPUT.PUT_LINE(v_OutputStr);

/* Rollback our changes */ ROLLBACK;

END l_InsertIntoTemp; /

REM PROCEDIMENTO CREATE OR REPLACE PROCEDURE InsertIntoTemp AS /* Declare variables to be used in this block. / v_Num1 NUMBER := 1; v_Num2 NUMBER := 2; v_String1 VARCHAR2(50) := 'Hello World!'; v_String2 VARCHAR2(50) := '-- This message brought to you by PL/SQL!'; v_OutputStr VARCHAR2(50); BEGIN / First, insert two rows into temp_table, using the values of the variables. */ INSERT INTO temp_table (num_col, char_col) VALUES (v_Num1, v_String1); INSERT INTO temp_table (num_col, char_col) VALUES (v_Num2, v_String2);

/* Now query temp_table for the two rows we just inserted, and output them to the screen using the DBMS_OUTPUT package. */ SELECT char_col INTO v_OutputStr FROM temp_table WHERE num_col = v_Num1; DBMS_OUTPUT.PUT_LINE(v_OutputStr);

SELECT char_col INTO v_OutputStr

-- Start of a nested block, which itself contains an executable -- and exception section BEGIN -- Handle the error condition INSERT INTO log_table (info) VALUES ('Student 10,000 does not exist!'); EXCEPTION WHEN OTHERS THEN -- Something went wrong with the INSERT DBMS_OUTPUT.PUT_LINE('Error inserting into log_table!'); END; END; /

Identificadores

Os identificadores são usados para nomear objetos da PL/SQL como variáveis, cursores, subprogramas, etc. Como regra geral, os identificadores: Consistem em uma letra, opcionalmente seguida por qualquer seqüência de caracteres incluindo números e ($), (#) e (_). Devem possuir comprimento máximo de 30 caracteres Não há distinção entre letras maiúscula e minúscula Não pode possuir nome igual uma palavra reservada, ex: BEGIN, END Podem ser identificados com aspas para possuírem espaços e distinção entre letras maiúsculas e minúsculas. EX: “X / Y”, “variavel A”

Literais

São valores constantes, podendo ser Caracter : (‘Teste literal’), Numérico: (132, - 44), ou Booleanos: (TRUE, FALSE, NULL)

Comentários

Melhoram a legibilidade e tornam os programas mais compreensíveis. Comentários de uma única linha, através de dois traços “--": v_data := SYSDATE; --variável recebe data atual Comentários de múltiplas linha, usando “/” para inicar e “/” para fechar: BEGIN /* Estamos agora dentro de um comentário. Aqui é a continuação do comentário. */ NULL; END;

Declaração de variável

Nome_da_variável [CONSTANT] datatype [NOT NULL] [{:= | DEFAULT} valor];

Onde nome_da_variável é o identificador, datatype é tipo e valor é o conteúdo inicial da variável. EX:

DECLARE v_dataInicial DATE; v_contador BINARY_INTEGER NOT NULL := 0; v_nome VARCHAR2(20); c_PI CONSTANT NUMBER DEFAULT 3.14;

Tipos PL/SQL

O Oracle PL/SQL possui diferentes tipos de dados (datatypes) para atender suas necessidades, que são divididos nas seguintes categorias: CHARACTER, NUMBER, DATE, LOB, BOOLEANOS, TIPOS COMPOSTOS, TIPOS DE OBJETO e TIPOS DE REFERÊNCIA.

Character Datatype

Usados para armazenar dados alfanuméricos.

CHAR() armazena string de tamanho fixo. Tamanho default 1, máximo 32.767. Subtipo: CHARACTER VARCHAR2() armazena string de tamanho variável. É possível armazenar string de até 32.767 bytes. Subtipo: STRING VARCHAR() sinônimo para o tipo VARCHAR2. NCHAR() e NVARCHAR2() possuem as mesmas características dos tipos CHAR e VARCHAR2 e são usados para armazenar dados NLS (National Language Support). A arquitetura Oracle NLS permite armazenar, processar e recuperar informações em linguagens nativas. LONG é um tipo de dados que se tornou “obsoleto” com a chegada dos tipos LOB (Large Object). O tipo LONG armazena strings de tamanho variável de no máximo 32.760 bytes.

Numeric Datatype

Usado para armazenar dados numéricos com precisão de até 38 digitos.

NUMBER(, ) onde corresponde ao número de dígitos e o número de casas decimais. Valores inseridos em colunas numéricas com número de casas decimais menor que o dado inserido serão arredondados. Subtipos: DEC, DECIMAL, DOUBLE PRECISION, FLOAT, INTEGER, INT, NUMERIC, REAL, SMALLINT.

Outros Datatypes

RAW é um tipo para dados binários, não interpretados pelo banco. Podem armazenar até 32.767 bytes de informação e seus dados não passam por conversão de conjunto de caracteres entre cliente e servidor. LONGRAW semelhante ao tipo LONG, é um tipo de dados “obsoleto” que pode armazenar até 32.760 bytes de dados. Seu uso foi depreciado pelos tipos BLOB e BFILE. ROWID Oracle utiliza o datatype ROWID para armazenar o endereço de cada linha no banco de dados. Toda tabela contém uma coluna oculta chamada ROWID que retorna um identificador único do endereço da linha no banco de dados no formato OOOOOOFFFBBBBBBRRR onde “O” representa o número do objeto, “F” o número do datafile, “B” a identificação do bloco Oracle e “R” a identificação da linha no bloco. UROWID Universal ROWID, suporta todos os tipos de ROWID (físicas ou lógicas) bem como de tabelas não Oracle acessadas através de gateway.

Tipo booleano

O único tipo de dados na família booleana é o BOOLEAN. Variáveis booleanas são utilizadas em estruturas de controle da PL/SQL como as instruções IF-THEN-ELSE e de LOOP. Podem conter apenas os valores TRUE, FALSE ou NULL.

Tipos compostos

Os tipos compostos disponíveis em PL/SQL são registros, tabelas e varrays. Um tipo composto é um que tem componentes dentro dele. Uma variável do tipo composta contém uma ou mais variáveis.

Tipos de referencia

Um tipo de referência na PL/SQL é semelhante a um ponteiro em C. Uma variável que seja declarada como um tipo de referência pode apontar para posições de memória diferentes na vida do programa. Em PL/SQL usamos os tipos REF e REF CURSOR.

Tipos de objeto

Consiste em um tipo composto que possui atributos (variáveis de outros tipos) e métodos (subprogramas) dentro dele.

Utilizando %TYPE

Utilizado para declarar uma variável com o mesmo tipo de uma coluna de alguma tabela, ex:

DECLARE

v_Nome STUDENTS.FIRST_NAME%TYPE; v_Idade PLS_INTEGER NOT NULL :=0; v_IdadeTemp v_Idade%TYPE; --não herda restrição nem valor default

Subtipos definidos pelo usuário

Utilizado para fornecer um tipo alternativo para um tipo, descrevendo sua utilização pretendida. Sintaxe:

SUBTYPE novo_tipo IS tipo_original ;

Exemplo:

DECLARE SUBTYPE T_Contador IS NUMBER(3); v_Contador T_Contador; SUBTYPE T_Nome IS STUDENTS.FIRST_NAME%TYPE;

Convertendo entre tipos de dados

Quando possível, a PL/SQL converterá automaticamente (conversão implícita) tipos dentro da mesma família e entre as famílias de tipos de dados: Caracteres e números Caracteres e datas

Funções para conversão explícita de tipos de dados:

Função Descrição TO_CHAR Converte seu argumento em um tipo VARCHAR TO_DATE Converte seu argumento em um tipo DATE TO_TIMESTAMP Converte seu argumento em um tipo TIMESTAMP TO_TIMESTAMP_TZ Converte seu argumento em um tipo TIMESTAMP WITH TIMEZONE TO_DSINTERVAL Converte seu argumento em um tipo INTERVAL DAY TO SECOND TO_YMINTERVAL Converte seu argumento em um tipo INTERVAL YEAR TO MONTH TO_NUMBER Converte seu argumento em um tipo NUMBER HEXTORAW Converte uma representação hexadecimal na quantidade binária equivalente