Buscar

Ao contrário das strings de VARCHAR2, uma string CHAR sempre contém o número máximo de caracteres. Outros tipos: • NCHAR Tamanho máximo: 2.000 byte...

Ao contrário das strings de VARCHAR2, uma string CHAR sempre contém o número máximo de caracteres. Outros tipos: • NCHAR Tamanho máximo: 2.000 bytes; • NCHAR VARYING Tamanho máximo: 4.000 bytes; • CHAR VARYING Tamanho máximo: 4.000 bytes. NUMBER(p,s) Numérico com sinal e ponto decimal, sendo que p é a precisão de 1 a 38 dígitos e s é a escala, de -84 a 127. Este tipo também possui subtipos como: • DECIMAL: igual a NUMBER • DEC: igual a DECIMAL • DOUBLE PRECISION: igual a NUMBER • NUMERIC: igual a NUMBER • REAL: igual a NUMBER • INTEGER: equivalente a NUMBER(38) • INT: igual a INTEGER • SMALLINT: igual a NUMBER(38) • FLOAT: igual a NUMBER 54 Casa do Código Capítulo 6. Aspectos iniciais da programação PL/SQL • FLOAT(prec): igual a NUMBER(prec), mas a precisão é expressa em termos de bits binários, não de dígitos decimais. A precisão binária pode variar de 1 até 126. • BINARY_INTEGER: semelhante a INTEGER. É usada para indexar tabela PL/SQL. DATE 1 JAN 4712 BC até 31 DEC 4712 AD (DATA com hora, minuto e segundo) O tipo DATE é usado para armazenar os valores de data e hora. Um nome melhor seria DATETIME porque o componente de hora está sempre lá, independente de você usá-lo ou não. Se não for especificada a hora ao atribuir um valor para uma variável deste tipo, o padrão de meia-noite (12:00:00 a.m.) será usado. BOOLEAN True e False. LONG Tamanho máximo para tabela: 2 GB. Tamanho máximo para PLSQL: 32.760. Somente pode existir uma coluna por tabela. RAW Tamanho máximo para campos de tabela: 2.000 bytes. Tamanho máximo para PL/SQL: 32.767. LONG RAW é outro tipo parecido com RAW, a diferença é que ele possui 7 bytes a menos quando utilizado em PL/SQL. CLOB Tamanho máximo: (4 GB - 1) * DB_BLOCK_SIZE. Parâmetro de inicialização: 8 TB a 128 TB. O número de colunas CLOB por tabela é limitado somente pelo número máximo de colunas por tabela. Armazena textos, que são validados conforme o set de caracteres, ou seja, armazena acentuação etc. 55 6.6. Tipos de dados em PL/SQL Casa do Código Tipos LOB, surgiram em substituição aos tipos LONG e LONG RAW, pois eles só permitiam uma coluna por tabela. Já os tipos LOB permitem mais de uma coluna. NCLOB Tamanho máximo: (4 GB - 1) * DB_BLOCK_SIZE. Parâmetro de inicialização: 8 TB a 128 TB. O número de colunas NCLOB por tabela é limitado somente pelo número máximo de colunas por tabela. Objeto de grande capacidade de caracteres nacionais – contém até 4GB de caracteres de bytes simples ou caracteres multibyte que atendem o conjunto de caracteres nacional definido pelo banco de dados Oracle. BLOB Tamanho máximo: (4 GB - 1) * DB_BLOCK_SIZE. Parâmetro de inicialização: 8 TB a 128 TB. O número de colunas BLOB por tabela é limitado somente pelo número máximo de colunas por tabela. Armazenam dados não estruturados como: som, imagem, dados binários. BFILE Tamanho máximo: 4 GB. Tamanho máximo para o nome do arquivo: 255 caracteres. Tamanho máximo para o nome do diretório: 30 caracteres. O valor máximo de BFILEs é limitado pelo valor do parâmetro de inicialização SESSION_MAX_OPEN_FILES, o qual é limitado pelo número máximo de arquivos abertos que o sistema operacional suporta. ROWID É um tipo especial usado para armazenar os ROWIDs (endereços físicos) das linhas armazenadas em uma tabela. Campos LONG Em resumo, os tipos comumente utilizados são: CHAR, VARCHAR2, NUMBER, DATE, BOOLEAN e os da família LOB. No entanto, existem algumas restrições para campos LONG e LONG RAW. • Não se pode criar um OBJECT TYPE com o atributo de LONG. • Uma coluna LONG não pode estar dentro da cláusula WHERE ou com referência integral dos dados, exceto NULL ou NOT NULL. • Uma função não pode retornar um campo LONG. • Uma tabela poderá ter somente um campo LONG. • LONG não pode ser indexada. • LONG não pode usar cláusulas WHERE, conforme já mencionado, GROUP BY, ORDER BY e CONNECT BY. Uma dica para você usar um campo LONG na cláusula WHERE é criar uma tabela temporária com os campos da tabela original, mas alterando um tipo LONG para CLOB. Também é possível alterar diretamente na tabela o campo LONG para CLOB, caso não tenha problema de alterar a estrutura da tabela original. 57 Capítulo 7 Exceções Exceções são utilizadas dentro do Oracle quando algum erro acontece. Quando construímos programas em PL/SQL é fundamental tratarmos as exceções que podem ocorrer mediante a execução do sistema e seus diversos processos. Basicamente, existem dois tipos de exceções dentro do Oracle: as predefinidas e as definidas pelo usuário. • Exceções predefinidas: são exceções existentes implicitamente dentro doOracle e que são disparadas automaticamente por ele quando ocorre um erro no programa. • Exceções definidas pelo usuário: são exceções que precisam ser declaradas e disparadas pelo usuário. O Oracle desconhece sua existência. 7.1. Exceções predefinidas Casa do Código 7.1 Exceções predefinidas Como foi dito, uma exceção é acionada quando um erro acontece dentro do programa. Mesmo que não as tratemos, o Oracle intercepta o problema e mostra o erro. Todavia, se deixarmos que o Oracle faça isto nós podemos ter sérios problemas, pois erros que não são tratados causam a parada do sistema, ou seja, o programa é abortado. Dentro da PL/SQL tratamos estes erros através das exceptions. Os mais variados tipos de erros podem ser tratados através deste recurso. Por exemplo, se temos dentro do nosso programa PL/SQL um cálculo onde possa acontecer uma divisão por zero, caso ocorra, um erro é disparado, pois sabemos que matematicamente não é possível resolvê-lo. A PL/SQL sabe disso e vai gerar uma exceção caso isto ocorra. Mediante isto, podemos nos antecipar e tratar este possível erro. Um ponto bom de tratarmos os erros é a possibilidade de mostrarmos mensagens mais amigáveis aos usuários e lhes propor ações que possam ajudá-los a resolver sem a intervenção da área de suporte, por exemplo. Além do mais, evitamos que o programa ou todo o sistema seja abortado, o que geraria um grande incômodo. Através do tratamento de exceções também é possível determinar se o programa pode continuar ou não com a ação após o erro ter ocorrido. Como este acionamento é feito? Quando acontece um desses erros predefinidos pelo Oracle, automaticamente a PL/SQL percebe sua ocorrência e o transfere para uma área de tratamento de erro. No entanto, às vezes esses erros demonstram certa falta de clareza em suas descrições, envolvendo termos muito técnicos, geralmente em inglês, o que pode confundir o usuário. Com isso em mente, eles podem ser tratados pelo desenvolvedor de sistemas a fim de torná-los mais compreensíveis. Contudo, o mesmo não acontece com os erros causados pelos usuários. Este tipo de erro a PL/SQL não consegue detectar pelo fato de não estarem incluídos implicitamente no Oracle. O uso das exceções é bem flexível, podendo ser usadas dentro de blocos anônimos, procedures, functions, packages e triggers. 60 Casa do Código Capítulo 7. Exceções Primeiramente, vamos falar sobre as exceptions predefinidas. Segue uma lista de exceptions que podem ser utilizadas em PL/SQL. • no_data_found: dispara quando um select into é executado e não retorna nenhum registro. Não ocorre se usarmos funções de grupo, pois estas retornam valores nulos quando não há registros. Também não ocorre em fetch (usado em cursores). Neste caso usamos atributos de cursor. Exemplo: C1%NO* TFOUND retorna verdadeiro se não encontrar mais linhas. • invalid_cursor: tentamos usar um cursor que não está aberto. • invalid_number: quando a conversão de um tipo para outro não é possível, ou quando um valor ultrapassa o número de casas definidas para o tipo de dado. Exemplo: uma variável number(2) recebe o valor 100. • login_denied: tentativa de conectar ao banco de dados com usuário inválido. • cursor_already_open: tentamos abrir um cursor que já se encontra aberto. • dup_val_on_index: tentativa de inserir valor duplicado em um índice único. Usado na verificação de chave primária ou única. • not_logged_on: tentamos usar algum recurso do banco sem estarmos conectados. • program_error: erro interno ao sistema Oracle, chamado de internal. • rowtype_mismatch: quando um fetch retorna uma determinada linha do banco de dados para uma variável do tipo registro onde os dados desta linha não são compatíveis com os tipos definidos na variável. • timeout_on_resource: tempo expirou quando o banco esperava pelo recurso. 61 7.1. Exceções predefinidas Casa do Código • too_many_rows: um select into retornou mais de uma linha. • value_error: em algumas circunstâncias é

Essa pergunta também está no material:

PLSQL - Domine a linguagem do banco de dados Oracle
428 pág.

Português Escola Colegio Estadual Barao Do Rio BrancoEscola Colegio Estadual Barao Do Rio Branco

💡 1 Resposta

User badge image

Ed Verified user icon

Parece que você está compartilhando um trecho extenso de um material sobre tipos de dados em PL/SQL. Como posso te ajudar com isso?

0
Dislike0

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais