Professional Documents
Culture Documents
• NOTA
A função DBMS_UTILITY.FORMAT_ERRO_STACK também retorna uma mensagem do erro
atual e pode ser utilizado além da SQLERRM.
Abaixo o bloco completo PL/SQL que desenvolvemos até agora, com um handler de exceção OTHERS
completo:
Se SQLERRM for chamada com qualquer valor positivo que não seja +100, a mensagem:
• Non-Oracle Exception
BEGIN
DBMS_OUTPUT.PUT_LINE('SQLERRM(0): ' || SQLERRM(0));
DBMS_OUTPUT.PUT_LINE('SQLERRM(100): ' || SQLERRM(100));
DBMS_OUTPUT.PUT_LINE('SQLERRM(10): ' || SQLERRM(10));
DBMS_OUTPUT.PUT_LINE('SQLERRM: ' || SQLERRM);
DBMS_OUTPUT.PUT_LINE('SQLERRM(-1): ' || SQLERRM(-1));
DBMS_OUTPUT.PUT_LINE('SQLERRM(-54): ' || SQLERRM(-54));
END;
DECLARE
e_MissingNull EXCEPTION;
PRAGMA EXCEPTION_INIT(e_MissingNull, -1400);
BEGIN
INSERT INTO students (id) VALUES (NULL);
EXCEPTION
WHEN e_MissingNull then
INSERT INTO log_table (info) VALUES ('ORA-1400 occurred');
END;
Utilizando RAISE_APPLICATION_ERROR
Você pode utilizar a função predefinida RAISE_APPLICATION_ERROR para criar suas próprias
mensagens de erro, que podem ser mais descritivas que as exceções identificadas. Os erros definidos pelo
usuário são passados para o bloco da mesma maneira como os erros do Oracle são passados para o ambiente
de chamada. A sintaxe é:
Exemplo:
v_CurrentStudents classes.current_students%TYPE;
v_MaxStudents classes.max_students%TYPE;
v_NumCredits classes.num_credits%TYPE;
v_Count NUMBER;
BEGIN
/* Determine the current number of students registered, and the
maximum number of students allowed to register. */
BEGIN
SELECT current_students, max_students, num_credits
INTO v_CurrentStudents, v_MaxStudents, v_NumCredits
FROM classes
WHERE course = p_Course
AND department = p_Department;
BEGIN
RAISE NO_DATA_FOUND;
END;
BEGIN
*
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at line 2
A linguagem SQL fornece diversas funções predefinidas que podem ser chamadas
a partir de uma instrução SQL. Por exemplo, a seguinte instrução SELECT utiliza a função
UPPER para retornar os primeiros nomes dos alunos, escritos em letras maiúsculas, em vez
da maneira como que eles foram armazenados.
Select upper (first_name)
From students;
Declare
V_firstName students.first_name%type;
Begin
V_firstName : = upper(‘charlie’);
End;
INITCAP (string)
Retorna string com o primeiro caractere de cada palavra em letra maiúscula e os caracteres restantes de cada
palavra em letras minúsculas.
LOWER (string)
Retorna string com todos os caracteres em letras minúsculas. Quaisquer caracteres que não forem letras
permanecem intactos. Se string tiver o tipo de dados CHAR, o resultado também será CHAR. Se string for
VARCHAR2, o resultado será VARCHAR2.
LTRIM (String1,String2)
Retorna string1 com os caracteres mais à esquerda aparecendo em string2 removidos. string2 assume o padrão
de um espaço em branco.
TRIM([{{LEADING|TRAILING|BOTH}[aparar_char])|aparar_char}FROM]string)
Retorna string com as ocorrências inicial, final ou ambas de aparar_char removidas.
UPPER (string)
Retorna string com todas as letras em maiúsculas.
SUBSTR
Sintaxe:
Retorna uma parte da string que inicia no caractere a, com o comprimento dos caracteres b. Se a for
0, é tratado como 1 (o início da string). Se a for positivo, os caracteres que retornam são contados da
esquerda. Se a for negativo, os caracteres retornam iniciando do final da string e são contados da direita. Se b
não estiver presente, a string inteira é assumida como padrão. Se b for menor que 1, NULL é retornado. Se
um valor de ponto flutuante for passado para a e b, o valor primeiro é truncado para um inteiro. O tipo de
retorno é sempre do mesmo tipo da string.
Exemplo:
Select substr(‘abc123def’,4,4)”First”
From dual;
First
-----
123d
Second
--------
3def
Third
-------
23def
SOUNDEX
Sintaxe:
SOUNDEX(string)
Retorna a representação fonética de string. Isso é útil para comparar palavras que apresentam grafia
diferente, mas são pronunciadas de modo semelhante. A representação fonética é definida no livro. The Art of
Computer Programming, Volume 3: Sorting and Searching de Donald E. Knuth.
Exemplo:
First_name SOUN
--------------------------------------
Scott S300
Margaret M626
Select first_name
From students
Where soundex(first_name) = soundex(‘skit’);
First_Name
--------------
Scott
ASCII (string)
Retorna a representação decimal do primeiro byte de string no conjunto de caracteres do banco de dados.
LENGTH (string)
Retorna o comprimento de string medido em caracteres.
INSTR
Sintaxe:
First
------
11
LENGTH
Sintaxe:
LENGTH(string)
Retorna o comprimento de string. Uma vez que valores de CHAR são preenchidos por espaços em
branco, se string tiver tipo de dados de CHAR, os espaços em branco finais são incluídos no comprimento.
Exemplo:
From dual;
Length
--------
22