-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathclass15_2020_06_25_functions_pl_sql.sql
51 lines (41 loc) · 1.33 KB
/
class15_2020_06_25_functions_pl_sql.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
-- FUNCTIONS (FUNÇÕES) PL/SQL
Programa PL/SQL que permite o retorno de informações
-- Sintaxe
CRETE [OR REPLACE] FUNCTION "function_name"
(parâmetro tipo_do_parametro tipo_dado_parametro, ...)
RETURN tipo_do_retorno
IS ou AS
-- Declaração das variáveis
BEGIN
-- Instruções PL/SQL
RETURN o que será retornado
END;
-- Função para retornar o documento do cliente formatado
CREATE OR REPLACE FUNCTION FORMATADOC(vdoc IN CLIENTE.doc_cliente%TYPE)
RETURN VARCHAR2
IS
vdocformatado VARCHAR2(19);
BEGIN
IF (LENGTH(vdoc) = 11) THEN
vdocformatado := SUBSTR(vdoc, 1, 3) || '.' || SUBSTR(vdoc, 4, 3) || '.' || SUBSTR(vdoc, 7, 3) || '-' || SUBSTR(vdoc, 10);
ELSIF (LENGTH(vdoc) = 14) THEN
vdocformatado := SUBSTR(vdoc, 1, 2) || '.' || SUBSTR(vdoc, 3, 3) || '.' || SUBSTR(vdoc, 5, 3) || '/' || SUBSTR(vdoc, 9, 4) || '.' || SUBSTR(vdoc, 13);
ELSE
vdocformatado := vdoc;
END IF;
RETURN vdocformatado;
END;
/
-- Testando a função FORMATADOC
SELECT nom_cliente, FORMATADOC(doc_cliente) DOCUMENTO FROM CLIENTE;
-- Função para retornar a idade do cliente
CREATE OR REPLACE FUNCTION IDADE(vdtn IN CLIENTE.dtn_cliente%TYPE)
RETURN NUMBER
IS
vidade NUMBER(3);
BEGIN
vidade := TRUNC(MONTHS_BETWEEN(SYSDATE, vdtn)/12);
RETURN vidade;
END;
/
SELECT nom_cliente, IDADE(dtn_cliente) IDADE FROM CLIENTE;