Você está na página 1de 289

>y

yyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyy 5@ bjbj22 .P X X yy yy yy
E E E E
S , 0 0 0 0 0 0 0 0S 2S 2S 2S 2S 2S 2S $ Ru `VS 00000VS 00kS ...
0xy000S .00S ..D4 0
I-"EB -E $S
S 0S YZTYZ "t -
YZu(00. 00000VS VS

a,D$


, APOSTILA DE SQL




O objetivo da Apostila trazer os principais comandos SQL usados
em aplicaes ORACLE, com exemplos, comentrios e explicaes.

FINALIDADE DO CAPITULO:

No final deste capitulo voc ser capaz de criar scripts
permitindo que o usurio entre com valores diversos.




A finalidade dos exemplos abaixo demostrar como permitir que o
usurio entre com os valores que possibilitem a execuo de um
comando SQL, isso tudo em tempo de execuo.
Verifique o uso do "&" que permite que o usurio entre com
dados. No exemplo abaixo temos um pedido de entrada de um numero,
por isso que o &numero_do_dept no est entre aspas. Podemos
notar tambm que aparece o old valor e o new valor, isso devido
ao cmdo set verify on, se quisermos que no aparea, devemos
usar o set verify off.

Vamos ao Exemplo:

SQL> set verify on
SQL> select id,last_name,salary
2 from s_emp
3 where dept_id=&numero_do_dept;
Enter value for numero_do_dept: 31
old 3: where dept_id=&numero_do_dept
new 3: where dept_id=31

ID LAST_NAME SALARY
--------- ------------------------- ---------
3 Nagayama 1400
11 Magee 1400

Agora no aparecer o new e old valor porque estamos usando o SET
VERIFY OFF.

SQL> set verify off
SQL> select id,last_name,salary
2 from s_emp
3 where dept_id=&numero_do_dept;
Enter value for numero_do_dept: 31

ID LAST_NAME SALARY
--------- ------------------------- ---------
3 Nagayama 1400
11 Magee 1400

Vimos anteriormente como que temos que proceder para que o
usurio entre com valores numricos, para que seja realizada
uma pesquisa, agora vamos possibilitar que o usurio ente com
valores do tipo caracter, a principal diferena o uso das
aspas, mas temos que ter ateno para o formato na hora de
digitarmos, porque tem que ser o mesmo do contedo que est na
tabela, com maisculas e minsculas.


Vamos ao Exemplo:

SQL> select id,last_name,salary
2 from s_emp
3 where title ='&job_title'; {possibilitando que o
usurio entre com o nome do title}
Enter value for job_title: Stock Clerk

ID LAST_NAME SALARY
--------- ------------------------- ---------
16 Maduro 1400
17 Smith 940
18 Nozaki 1200
19 Patel 795
20 Newman 750
21 Markarian 850
22 Chang 800
23 Patel 795
24 Dancs 860
25 Schwartz 1100

10 rows selected.

Nos exemplos anteriores o usurio entrou com a condio de
pesquisa quer seja numrica ou caracter, cada qual com suas
caractersticas, agora vamos ver como que possibilitamos ao
usurio entrar com o nome da coluna e com a prpria condio de
pesquisa que ser estabelecida na clusula WHERE. Neste caso
temos um exemplo onde requerida a entrada de um dado numrico.



Vamos ao exemplo:

SQL> select id,&nome_coluna
2 from s_emp
3 where &condio;
Enter value for nome_coluna: LAST_NAME
Enter value for condio: SALARY > 100

ID LAST_NAME
--------- -------------------------
1 Velasquez
2 Ngao
3 Nagayama
4 Quick-To-See
5 Ropeburn
6 Urguhart
7 Menchu
8 Biri
Temos um outro exemplo em que o usurio entra com o valor da
coluna e da condio da WHERE.

SQL> select id,&nome_coluna
2 from s_ord
3 where &condio;
Enter value for nome_coluna: date_ordered
Enter value for condio: total>30000

ID DATE_ORDE
--------- ---------
100 31-AU-92
104 03-SEP-92
107 07-SEP-92
108 07-SEP-92
109 08-SEP-92
97 28-AU-92

6 rows selected.




CONSTRUINDO SCRIPTS USANDO OPES PARA O USURIO ENTRE COM DADOS
E TAMBM PARA S MOSTRAR NA TELA O PROMPT.



No exemplo abaixo estamos usando os seguintes comandos que na da
mais do que a soma de tudo aquilo que vimos neste capitulo mas
tambm algo mais:
O cmdo SET ECHO OFF serve para em tempo de execuo no se exiba
os comandos do SQL e SET ECHO ON serve para retornar a forma
anterior.
O cmdo ACCEPT serve para que preparemos um PROMPT para receber um
valor.
Neste exemplo tambm temos a criao de uma varivel chamada
V_NAME que recebe valores.
Estamos preparando o ambiente para receber valores que sero
armazenados dentro de uma varivel, para aps isto, serem feitas
comparaes dentro da clusula WHERE.
Estamos usando duas tabelas S_DEPT e S_REION, o AND uma funo
onde complementa a clusula WHERE, e o UPPER no DPT.NAME est
passando o contedo do nome do dept para maisculo para que seja
efetuada a comparao com um nome que ser digitado pelo
usurio, que por sua vez recebe um UPPER que o transforma em
maisculo. Essa alternativa feita
porque no sabemos qual o formato do dado na tabela.

Vamos ao exemplo:

SET ECHO OFF
ACCEPT V_NAME PROMPT 'D O NOME DO DEPARTAMENTO:'
SELECT DPT.NAME, RE.ID, RE.NAME " NOME DA REIO"
FROM S_DEPT DPT, S_REION RE {veja a criao de apelidos}
WHERE DPT.REION_ID = RE.ID {veja o join}
AND UPPER(DPT.NAME LIE UPPER('&V_NAME' {valor digitado }

SET ECHO ON

Como estamos gerando um SCRIPT, os comandos devem ficar
armazenados dentro de um arquivo que possua a extenso SQL e
preparado da forma descrita acima quando estivermos no SQL e
desejarmos executar o nosso SCRIPT temos que seguir o
procedimento descrito abaixo, usando "@" e o nome do arquivo, ou
" START" e o nome do arquivo.




Vamos ao exemplo:

SET ECHO ON
SQL> @TEST.SQL
SQL> SET ECHO OFF
D O NOME DO DEPARTAMENTO:sales
old 4: AND UPPER(DPT.NAME LIE UPPER('&V_NAME'
new 4: AND UPPER(DPT.NAME LIE UPPER('sales'

NAME ID NOME DA REIO
------------------------- ---------
---------------------------------------------
Sales 1 North America
Sales 2 South America
Sales 3 frica Middle East
Sales 4 sia
Sales 5 Europe

Podemos notar que por ocasio da execuo o exemplo anterior
mostrou o OLD e o NEW valores da varivel, para no mostrar temos
que usar o SET VERIFY OFF veja abaixo:


Vamos ao exemplo:

SET VERIFY OFF
SET ECHO OFF
ACCEPT V_NAME PROMPT 'D O NOME DO DEPARTAMENTO:'
SELECT DPT.NAME, RE.ID, RE.NAME " NOME DA REIO"
FROM S_DEPT DPT, S_REION RE
WHERE DPT.REION_ID = RE.ID
AND UPPER(DPT.NAME LIE UPPER('&V_NAME'

SET ECHO ON

Executando o SCRIPT:

SQL> START TEST.SQL
SQL> SET VERIFY OFF
SQL> SET ECHO OFF
D O NOME DO DEPARTAMENTO:SALES

NAME ID NOME DA REIO
------------------------- ---------
---------------------------------------------
Sales 1 North America
Sales 2 South America
Sales 3 Africa Middle East
Sales 4 sia
Sales 5 Europe

Input truncated to 11 characters



OUTRO EXEMPLO DE ERAO DE SCRIPT:

Mais uma vez vamos usar alguns comandos j vistos em exemplos
anteriores, mas tambm alguns comandos novos e precisamos
Mostrar a descrio de tais comandos:
O comando SET ECHO OFF tem a finalidade de no deixar aparecer os
cmdos feitos para a execuo.
O cmdo VERIFY OFF tem a finalidade de no mostrar os valores
recebidos pelas as variveis que no exemplo em questo so
MENOR_DT e MAIOR_DT.
O ACCEPT usado para criar variveis e o PROMPT para receber
valores para as variveis.
Criadas as variveis, observe a sintaxe e o "-" entre a definio
do formato de data o uso de DATE, o FORMAT e a especificao
'MMDDYY'.
Estamos usando tambm o COLUMN FORMAT A30 para formatar o tamanho
da coluna EMPREADO e logo depois estamos concatenando as colunas
FIRST_NAME e LAST_NAME.
Estamos tambm usando o BETWEEN para pesquisarmos valores que
esto entre uma data e outra.
Observe o uso do TO_DATE antes da colocao da varivel com o "&"
para receber valores que o usurio digita, e observe tambm a
forma que foi colocado o formato da data 'MMDDYY' e o uso do
AND que faz parte da WHERE.
O UNDEFINE serve para que as variveis percam os valores aps a
execuo.

Vamos ao Exemplo:

SET ECHO OFF
SET VERIFY OFF

ACCEPT MENOR_DT DATE FORMAT 'MMDDYY' -
PROMPT 'ENTRE MENOR DATA (MMDDAA :'
ACCEPT MAIOR_DT DATE FORMAT 'MMDDYY' -
PROMPT 'ENTRE MAIOR DATA (MMDDAA :'
COLUMN EMPREADO FORMAT A30
SELECT USERID,FIRST_NAME' 'LAST_NAME "EMPREADO",
START_DATE FROM S_EMP
WHERE START_DATE BETWEEN TO_DATE('&MENOR_DT','MMDDYY'
AND TO_DATE('&MAIOR_DT','MMDDYY'

UNDEFINE MENOR_DT
UNDEFINE MAIOR_DT
COLUMN EMPREADO CLEAR
SET ECHO ON
SET VERIFY ON


OUTRO EXEMPLO DE SCRIPT:

Estamos montando um script com a finalidade de receber um valor
que pesquise registros, no caso estamos querendo pesquisar o ID e
o NOME de um CUSTOMER e para isso recebendo um dos nomes do
CUSTOMER, por isso estamos usando o LIE e "&NOME" estamos
transformando a coluna NAME da tabela a ser pesquisada em
maisculo para que qualquer nome que seja digitado em maisculo
seja pesquisado.
Est sendo criado a varivel NOME pelo ACCEPT e o PROMPT
possibilita a recepo de um valor, observe a sintaxe "-" aps a
varivel NOME.

Vamos ao exemplo:

SET ECHO OFF
SET VERIFY OFF
ACCEPT NOME -
PROMPT ' ENTRE COM O NOME DESEADO :'
SELECT ID, NAME FROM S_CUSTOMER
WHERE UPPER(NAME LIE '&NOME'

SET ECHO ON
SET VERIFY ON

FINAL DE CAPITULO








FINALIDADE DO CAPITULO:
O COMANDO ALTER TABLE E SUAS VARIAES:

Adicionado uma coluna em uma tabela:

No exemplo a seguir estamos usando o cmdo ALTER TABLE para
adicionar uma coluna em uma tabela, a coluna adicionada a tabela
sempre ser a ltima, importante saber que no podemos deletar
uma coluna de uma tabela mas somente adicionar, se precisarmos
dropar uma coluna a soluo dropar a tabela e recri - la sem
a coluna.
Vamos ao exemplo:

SQL> ALTER TABLE S_REION
ADD (comments VARCHAR(255;

Table altered.


O COMD MODIFY:

No exemplo abaixo estamos modificando uma coluna usando o comando
modify, no caso estamos aumentando o tamanho da coluna title para
50, permitido aumentar o tamanho da coluna mas diminuir no
permitido.

SQL> ALTER TABLE s_emp
2 MODIFY (title VARCHAR(50;

Table altered.


ADCIONANDO UMA CONSTRAINT:

Para adicionarmos uma constraint temos que usar O ALTER TABLE
criar um nome para nossa constraint no
caso's_emp_maneger_id_fk', escrevendo de onde ela colocando a
referncia com o id de s_emp.

Vamos ao exemplo:

SQL>
ALTER TABLE s_emp
ADD CONSTRAINT s_emp_manager_id_fk
FOREIN EY (MANAER_ID
REFERENCES s_emp(id


DROPANDO UMA CONSTRAINT:
Este exemplo mostra como dropar uma CONSTRAINT, Neste caso o
nome da constraint s_emp_maneger_id_fk, verifique a forma como
foi escrito o exemplo abaixo:

SQL> ALTER TABLE S_EMP
2 DROP CONSTRAINT s_emp_manager_id_fk;

Table altered.

DROPANDO REISTROS EMCACATA:
Para dropar uma chave primaria em cascata ou seja, delet - la de
forma que seja deletada em todas as tabelas com quem tenha
relao, temos prosseguir da seguinte forma:

Vamos ao exemplo:

SQL> ALTER TABLE s_dept
2 DROP primary key cascade; {observe o cmdo cascade}

Table altered.

Desabilitando CONSTRAINTS de uma tabela:

Verifique o cmdo CACADE sendo usado no ALTER TABLE, a finalidade
de seu uso permitir que todos os objetos que fazem referncia
ao campo ID de S_EMP aceitem a desabilitao da constraint.

Vamos ao exemplo:

SQL> ALTER TABLE s_emp
2 DISABLE CONSTRAINT s_emp_id_pk CASCADE;

Table altered.

Habilitando uma constraint:

Para habilitarmos uma constraint no precisamos usar o cmdo
cascade, porque criada de forma automtica
a U ou F.






Vamos ao exemplo
SQL> ALTER TABLE s_emp
2 ENABLE CONSTRAINT s_emp_id_pk;

Table altered.


FINAL DE CAPITULO


FINALIDADE DO CAPITULO:

O COMANDO SELECT TO_CHAR:

O exemplo abaixo temos um select que est selecionando
id,date_ordered da tabela s_ord onde o sales_rep_id igual a 11,
podemos notar que a date_ordered(data igual ao formato de data
padro do oracle, ou seja, ms por extenso abreviado e o ano com
os dois ltimos nmeros do ano.

Vamos ao exemplo:

SQL> SELECT ID,DATE_ORDERED
2 FROM S_ORD
3 WHERE
4 SALES_REP_ID = 11;

ID DATE_ORDE
--------- ---------
100 31-AU-92
105 04-SEP-92
109 08-SEP-92
110 09-SEP-92
111 09-SEP-92

No exemplo abaixo estamos com o comando " to_char " mudando
o formato da data para o modelo que ns estamos querendo mostrar
em tela, ou seja, estamos mudando o formato padro do oracle para
um novo formato correspondente ao que queremos, no caso 'mmyy'
que corresponde ao ms e o ano.

Vamos ao exemplo:

SQL> SELECT ID,TO_CHAR(DATE_ORDERED,'MMYY' ORDERED
2 FROM S_ORD
3 WHERE SALES_REP_ID = 11;

ID ORDERED
--------- ------------------------------------------
100 0892
105 0992
109 0992
110 0992
111 0992



Agora vamos converter a data colocando o dia por extenso ou seja
usando, "day"(extenso, para o dia e colocando o ms por extenso
usando, "month" para ms e colocando o ano por extenso usando o
"yyyy" para ano.

Vamos ao Exemplo:

SELECT ID,TO_CHAR(DATE_ORDERED,'DAYMONTHYYYY' ORDERED
FROM S_ORD
WHERE SALES_REP_ID = 11


ID ORDERED
--- ---------------------------------------------------------
100 MONDAY AUUST 1992
105 FRIDAY SEPTEMBER1992
109 TUESDAY SEPTEMBER1992
110 WEDNESDAYSEPTEMBER1992
111 WEDNESDAYSEPTEMBER1992


Agora estamos colocando o nome da ano escrito por extenso usando
a FUNO "YEAR".


SELECT ID,TO_CHAR(DATE_ORDERED,'DAYMONTHYEAR' ORDERED
FROM S_ORD
WHERE SALES_REP_ID = 11;

ID ORDERED
---- -----------------------------------------------------
100 MONDAY AUUST NINETEEN NINETY-TWO
105 FRIDAY SEPTEMBERNINETEEN NINETY-TWO
109 TUESDAY SEPTEMBERNINETEEN NINETY-TWO
110 WEDNESDAYSEPTEMBERNINETEEN NINETY-TWO
111 WEDNESDAYSEPTEMBERNINETEEN NINETY-TWO

Agora estamos usando o cmdo " dy " para mudar o dia da semana,
passando da escrita por extenso para abreviado em trs dgitos,
observe o exemplo.

Vamos ao exemplo:

SQL> SELECT ID,TO_CHAR(DATE_ORDERED,'DYMONTHYEAR' ORDERED
2 FROM S_ORD
3 WHERE SALES_REP_ID = 11;

ID ORDERED
--------- ---------------------------------------------------
100 MONAUUST NINETEEN NINETY-TWO
105 FRISEPTEMBERNINETEEN NINETY-TWO
109 TUESEPTEMBERNINETEEN NINETY-TWO
110 WEDSEPTEMBERNINETEEN NINETY-TWO
111 WEDSEPTEMBERNINETEEN NINETY-TWO


O exemplo abaixo demostra como colocar o dia em formato numrico
"FMDD" e o ms e o ano por extenso.

Select LAST_NAME, TO_CHAR(START_DATE,'FMDD "OF" MONTH YYYY'
HIREDATE
FROM S_EMP
WHERE START_DATE LIE '91'

LAST_NAME
-----------------------
HIREDATE
-----------------------
Nagayama
17 OF UNE 1991

Urguhart
18 OF ANUARY 1991

Havel
27 OF FEBRUARY 1991

Sedeghi
18 OF FEBRUARY 1991

Dumas
09 OF OCTOBER 1991

Nozaki
09 OF FEBRUARY 1991

Patel

LAST_NAME
-----------------------
HIREDATE
-----------------------
06 OF AUUST 1991

Newman
21 OF ULY 1991

Markarian
26 OF MAY 1991

Dancs
17 OF MARCH 1991

Schwartz
09 OF MAY 1991


No exemplo abaixo estamos usando a funo to_char novamente,
agora para formatarmos um numero e concatenarmos uma coluna
numrica com um comentrio caracter.

Vamos ao Exemplo:

SQL>
SELECT 'O PEDIDO ' TO_CHAR(ID'
TEM UM TOTAL DE: 'TO_CHAR(TOTAL,'FM$9,999,999'
FROM S_ORD
WHERE DATE_SHIPPED ='21-SEP-92'


'OPEDIDO'TO_CHAR(ID'TEMUMTOTALDE:'
TO_CHAR(TOTAL,'FM$9,999,999'
-----------------------------------------------------------------
-------
O PEDIDO 107
TEM UM TOTAL DE: $142,171

O PEDIDO 110
TEM UM TOTAL DE: $1,539

O PEDIDO 111
TEM UM TOTAL DE: $2,770


FINAL DE CAPTULO.





Finalidade do Capitulo:
Demostrar o uso do Comando TO_DATE.

Verifique que no exemplo abaixo estamos querendo fazer uma
pesquisa usando um campo data onde escrevemos a data, o ms e o
ano e o cmdo to_date transforma o que digitamos em data para a
pesquisa, s que deve ser obedecida uma sequncia lgica nas
posies por isso o exemplo abaixo est incorreto.


Vamos ao exemplo:

SQL> SELECT DATE_ORDERED
2 FROM S_ORD
3 WHERE DATE_ORDERED =
4 TO_DATE('31 1992, AUUST','DD MONTH, YYYY';
ERROR:
ORA-01843: not a valid month




Vamos tentar corrigir o exemplo acima. A funo do cmdo to_date
converter valores digitados, numricos e caracters
para data, a ordem da data procurada no exemplo abaixo tem que
ser a mesma do formato de data colocado da seguinte forma:


SQL> SELECT DATE_ORDERED
2 FROM S_ORD
3 WHERE DATE_ORDERED =
4 TO_DATE('31 1992, AUUST','DD, YYY MONTH';

DATE_ORDE
---------
31-AU-92
31-AU-92
31-AU-92
31-AU-92
31-AU-92


FINAL DE CAPTULO
Finalidade do Captulo:
Demostrar o uso dos comandos COMMIT,ROLLBAC E SAVE POINT.

Os cmdos COMMIT , ROLLBAC e SAVE POINT so usados para controle
de execuo, de confirmao e de retorno.Veja abaixo que estamos
alterando o valor de SALARY na tabela S_EMP usando o UPDATE e
SET, aps alter-los ns criamos um SAVEPOINT, que serve
simplesmente para o controle de ponto, para se quisermos dar um
ROLLBAC nas alteraes feitas at ento, termos condies de
limitar o espao atingindo pelo ROLLBAC.

Vamos ao Exemplo de Update:

SQL> EDIT
Wrote file afiedt.buf
1 UPDATE S_EMP
2 SET SALARY = SALARY 1.1
3 WHERE TITLE ='Stock Clerk'
SQL>

10 rows updated.

Agora vamos criar um SAVEPOINT.

Vamos ao Exemplo:

SQL> savepoint update_ponto;

Savepoint created.

Agora usando o cmdo INSERT INTO estamos inserindo registros
na tabela s_region.

SQL> insert into s_region (id,name
2 values (8,'central';

1 row created.

Estamos selecionando os registros de s_region para confirmamos a
insero ou seja, se realmente foi includo registros nesta
tabela.



SQL> select from
2 s_region
3 where id = 8;

ID NAME
--------- ------------------------------------
8 central

Agora aps confirmarmos a incluso dos registros, ns decidirmos
que no queremos que seja includo registros na referida tabela
s_region e para voltarmos a nossa ao temos ento que dar um
ROLLBAC, para desfazer o INSERT, s que somente at o ponto da
insero, ou seja at o SAVE POINT, que foi criado anteriormente
ou seja tudo que est antes do SAVE POINT continua com suas
alteraes preservadas, bom observar que para o SAVE POINT foi
criado um nome no caso UPDATE_PONTO, isso serve para que possamos
referenciar de forma correta at que ponto queremos cancelar
nossas aes ou seja at que ponto no queremos que sejam salvas
nossas aes.

Vamos ao exemplo:

SQL> ROLLBAC TO UPDATE_PONTO;

Rollback complete.

Agora vamos dar novamente um select para confirmarmos se o nosso
ROLLBAC realmente fez efeito, observe que as alteraes feitas
anteriormente no foram concretizadas.

SQL> select from
2 s_region
3 where id = 8;

no rows selected

O CMDO ROLLBAC serve para que seja desfeitas as alteraes que
foram efetuadas em uma tabela.

Vamos ao exemplo:

SQL> delete from test;
25,000 rows deleted

para cancelar o DELETE na tabela test.

SQL> ROLLBAC;
Rollback complete.

O uso do COMMIT:

O CMDO COMMIT o contrrio do ROLLBAC ou seja serve para
confirmar as alteraes que por ventura sejam feitas. Uma vez
dado um COMMIT no podemos retornar mais atrs.

SQL> delete from test;
25,000 rows deleted

Vamos confirmar o DELETE com o COMMIT.

SQL> COMMIT;
Commit complete.



FINAL DE CAPTULO
Finalidade do Captulo demostrar como criar comentrios
a respeito de tabelas.

O comentrios criado a respeito de tabelas e colunas so
armazenados no dicionrio de dados em:
ALL_COL_COMMENTS
USER_COL_COMMENTS
ALL_TAB_COMMENTS
USER_TAB_COMMENTS


Criando comentrios para uma tabela:

SQL> COMMENT ON TABLE s_emp is ' informao sobre funcionrio';

Comment created.


Como criar comentrios para uma coluna:

SQL> COMMENT ON COLUMN s_emp.last_name IS ' ultimo';

Comment created.COMMENT ON COLUMN s_emp.last_name IS ' ltimo'

Como verificar os comentrios existentes dentro de uma tabela ou
coluna:

Primeiramente vamos verificar os comentrios relativos as colunas
pertencentes a uma tabela all_col_comments, para depois
realizarmos um select em seu contedo pesquisando pelo nome da
tabela ou coluna para sabermos qual o comentrio especfico a
respeito.

SQL> desc all_col_comments
Name Null Type
------------------------------- -------- ----
OWNER NOT NULL VARCHAR2(30
TABLE_NAME NOT NULL VARCHAR2(30
COLUMN_NAME NOT NULL VARCHAR2(30
COMMENTS VARCHAR2(2000






Vamos realizando um SELECT ALL_COL_COMMENTS para vermos quais
os comentrios relativos a todas as colunas da tabela s_emp que
so armazenados em COMMENTS :

SQL> select COMMENTS
2 from all_col_comments
3 where TABLE_NAME = 'S_EMP';

COMMENTS
------------
ultimo

COMMENTS
------------

Agora queremos saber o comentrio a respeito da tabela s_emp veja
abaixo:

SQL> SELECT COMMENTS
2 FROM ALL_TAB_COMMENTS
3 WHERE TABLE_NAME ='S_EMP';

COMMENTS
----------------------------------

informao sobre funcionrio




FIM DE CAPTULO
Finalidade do Captulo Tratar de Assuntos Relativos a
Constraints.


Vamos ver como verificar as constraints de uma tabela
O seus tipos e nomes ou seja se not null, se foreing
key,unique key ou primary key.

SQL> SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, SEARCH_CONDITION,
2 R_CONSTRAINT_NAME
3 FROM USER_CONSTRAINTS
4 WHERE TABLE_NAME = 'S_DEPT';

CONSTRAINT_NAME C
------------------------------ -
SEARCH_CONDITION
-----------------------------------------------------------------
---------------
R_CONSTRAINT_NAME
------------------------------
S_DEPT_ID_NN C
ID IS NOT NULL


S_DEPT_NAME_NN C
NAME IS NOT NULL


S_DEPT_ID_P P



S_DEPT_NAME_REION_ID_U U



S_DEPT_REION_ID_F R

----------------------------

S_REION_ID_P





Para vermos o nome das colunas envolvidas com constraints e seus
respectivos nomes naturais temos que fazer um select na tabela
user_cons_columns conforme o exemplo a seguir:

SQL> SELECT CONSTRAINT_NAME, COLUMN_NAME
2 FROM USER_CONS_COLUMNS
3 WHERE TABLE_NAME = 'S_DEPT';

CONSTRAINT_NAME COLUMN_NAME
------------------------------ ---------------------
S_DEPT_ID_NN ID
S_DEPT_ID_P ID
S_DEPT_NAME_NN NAME
S_DEPT_NAME_REION_ID_U NAME
S_DEPT_NAME_REION_ID_U REION_ID
S_DEPT_REION_ID_F REION_ID

6 rows selected.




FINAL DE CAPTULO
Finalidade do Captulo o Uso do Create, Drop Table.

O comando DROP usado para deletar a tabela ou seja, apag-la
fisicamente.
O comando CREATE usado na criao de tabelas e o INSERT na
insero de dados em tabelas.

Vamos ao exemplo de como DROPAR uma tabela, VIEW ou SEQUENCE:

DROP TABLE EMP;
DROP TABLE DEPT;
DROP TABLE BONUS;
DROP TABLE SALRADE;
DROP TABLE DUMMY;
DROP TABLE ITEM;
DROP TABLE PRICE;
DROP TABLE PRODUCT;
DROP TABLE ORD;
DROP TABLE CUSTOMER;
DROP VIEW SALES;
DROP SEQUENCE ORDID;
DROP SEQUENCE CUSTID;
DROP SEQUENCE PRODID;

Vamos ao exemplo de como criar uma tabela, observe os detalhes em
relao aos parnteses, nome das colunas ,data type e
constraints.

CREATE TABLE DEPT (
DEPTNO NUMBER(2 NOT NULL,
DNAME CHAR(14,
LOC CHAR(13,
CONSTRAINT DEPT_PRIMARY_EY PRIMARY EY (DEPTNO;

Aps criarmos a tabela vamos inserir dados a mesma, em um comando
INSERT

INSERT INTO DEPT VALUES (10,'ACCOUNTIN','NEW YOR';
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS';
INSERT INTO DEPT VALUES (30,'SALES','CHICAO';
INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON';






CREATE TABLE EMP
( EMPNO NUMBER(4 NOT NULL,
ENAME CHAR(10,
OB CHAR(9,
MR NUMBER(4 CONSTRAINT EMP_SELF_EY
REFERENCES EMP (EMPNO,
HIREDATE DATE,
SAL NUMBER(7,2,
COMM NUMBER(7,2,
DEPTNO NUMBER(2 NOT NULL,
CONSTRAINT EMP_FOREIN_EY FOREIN EY (DEPTNO REFERENCES DEPT
(DEPTNO,
CONSTRAINT EMP_PRIMARY_EY PRIMARY EY (EMPNO;

Inserindo Registros na Tabela Criada Usando o cmdo INSERT.

INSERT INTO EMP VALUES (7839,'IN','PRESIDENT',NULL,'17-NOV-
81',5000,NULL,10;
INSERT INTO EMP VALUES (7698,'BLAE','MANAER',7839,'1-MAY-
81',2850,NULL,30;
INSERT INTO EMP VALUES (7782,'CLAR','MANAER',7839,'9-UN-
81',2450,NULL,10;
INSERT INTO EMP VALUES (7566,'ONES','MANAER',7839,'2-APR-
81',2975,NULL,20;
INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,'28-SEP-
81',1250,1400,30;
INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,'20-FEB-
81',1600,300,30;
INSERT INTO EMP VALUES (7844,'TURNER','SALESMAN',7698,'8-SEP-
81',1500,0,30;
INSERT INTO EMP VALUES (7900,'AMES','CLER',7698,'3-DEC-
81',950,NULL,30;
INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,'22-FEB-
81',1250,500,30;
INSERT INTO EMP VALUES (7902,'FORD','ANALYST',7566,'3-DEC-
81',3000,NULL,20;
INSERT INTO EMP VALUES (7369,'SMITH','CLER',7902,'17-DEC-
80',800,NULL,20;
INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST',7566,'09-DEC-
82',3000,NULL,20;
INSERT INTO EMP VALUES (7876,'ADAMS','CLER',7788,'12-AN-
83',1100,NULL,20;
INSERT INTO EMP VALUES (7934,'MILLER','CLER',7782,'23-AN-
82',1300,NULL,10;



Outro Exemplo de Como Criar uma Tabela:

CREATE TABLE BONUS (
ENAME CHAR(10,
OB CHAR(9,
SAL NUMBER,
COMM NUMBER;

CREATE TABLE SALRADE (
RADE NUMBER,
LOSAL NUMBER,
HISAL NUMBER;

Inserindo Valores na Nova Tabela.

INSERT INTO SALRADE VALUES (1,700,1200;
INSERT INTO SALRADE VALUES (2,1201,1400;
INSERT INTO SALRADE VALUES (3,1401,2000;
INSERT INTO SALRADE VALUES (4,2001,3000;
INSERT INTO SALRADE VALUES (5,3001,9999;


Para criarmos uma tabela temos antes que mais nada ter permisso
para isto ou seja RANT, que nos concedido atravs do DBA,
depois no podemos nos esquecer de criar as CONSTRAINTS que so
as P os campos NOT NULL as F. O observe a sintaxe da criao de
tabela, a definio do tipo e tamanho das colunas ( Data Type, a
referencia a chave estrangeira e a criao, as colunas de formato
DATE usa-se o padro SYSDATE que corresponde a data do sistema.


Vamos ao Exemplo:

CREATE TABLE S_TEST
(ID NUMBER(7
CONSTRAINT S_TEST_ID_P PRIMARY EY,
NAME VARCHAR2(25
CONSTRAINT S_TEST_NAME_NN NOT NULL,
REION_ID NUMBER(7
CONSTRAINT S_TEST_REION_ID_F REFERENCES
S_REION(ID,
START_DATE DATE DEFAULT SYSDATE





No prximo exemplo vamos criar uma tabela em funo de uma outra
onde se traz somente as constrains NOT NULL, o tipo e tamanho das
colunas so tambm automaticamente trazidos, assim tambm como o
contedo dos mesmos. Verifique o exemplo abaixo como isto feito
e veja o formato de S_EMP e o novo formato do que chamamos de
EMP_41, veja tambm que ele somente traz os registros referentes
ao dept 41. Observe a sintaxe "AS" e a sub query dentro do Create
table.

SQL> Create table emp_41
2 AS
3 SELECT ID,LAST_NAME,USERID,START_DATE,
4 SALARY,TITLE
5 FROM S_EMP
6 WHERE DEPT_ID = 41;

Table created.


O formato da tabela criada, o mesmo da s_emp veja:

SQL> DESC EMP_41
Name Null Type
------------------------------- -------- ----
ID NOT NULL NUMBER(7
LAST_NAME NOT NULL VARCHAR2(25
USERID NOT NULL VARCHAR2(8
START_DATE DATE
SALARY NUMBER(11,2
TITLE VARCHAR2(25


SQL> desc s_emp
Name Null Type
------------------------------- -------- ----
ID NOT NULL NUMBER(7
LAST_NAME NOT NULL VARCHAR2(25
FIRST_NAME VARCHAR2(25
USERID NOT NULL VARCHAR2(8
START_DATE DATE
COMMENTS VARCHAR2(255
MANAER_ID NUMBER(7
TITLE VARCHAR2(25
DEPT_ID NUMBER(7
SALARY NUMBER(11,2
COMMISSION_PCT NUMBER(4,2



Veja os dados da nova tabela.

SQL> select id,last_name
2 from EMP_41;

ID LAST_NAME
--------- -------------------------
2 Ngao
6 Urguhart
16 Maduro
17 Smith

Observe que os dados abaixo so os mesmos da tabela criada que
foram justamente criada a partir do departamento 41.


SQL> select id,last_name
2 from s_emp
3 where dept_id = 41;

ID LAST_NAME
--------- ------------------------
2 Ngao
6 Urguhart
16 Maduro
17 Smith




Como descobrir quais so as tabelas que esto a nossa
disposio:

select object_name from user_Objects
where object_type = 'TABLE';

FIM DE CAPTULO
Finalidade do Captulo:
Demostrar o uso do comando DELETE:

O Cmdo DELETE serve para delatarmos registros em uma tabela,
usamos o DELETE from e o nome da tabela.Neste exemplo abaixo
estamos querendo deletar todos
os registros da tabela s_emp que tenham como start_date
o dia 01.01.1996, para isso temos que usar na clausula WHERE o
TO_DATE colocando o valor do que ns estamos querendo e seu
correspondente dia, ms e ano conforme o formato, no caso no
deletou nenhum registro porque no existia nenhum que satisfazia
as condies.

Vamos ao exemplo:

SQL> EDIT
Wrote file afiedt.buf
1 DELETE FROM s_emp
2 WHERE START_DATE >
3 TO_DATE ('01.01.1996','DD.MM.YYYY'
SQL>

0 rows deleted

Agora estamos tentando deletar um registro que existe, como o
registro existente uma F que logicamente existe uma outra
tabela no se aceita a deleo, veja a mensagem de erro de
violao de constraint.

SQL> DELETE FROM s_emp
2 WHERE START_DATE > TO_DATE ('01.01.1991','dd.mm.yyyy';
DELETE FROM s_emp

ERROR at line 1:
ORA-02292: integrity constraint (UIMA.S_WAREHOUSE_MANAER_ID_F
violated - child record found


Para deletar todos os registros de uma tabela procede-se da
seguinte forma:

SQL> DELETE FROM test;

25,000 rows deleted.


Para confirmarmos a deleo usamos o comando select na table
deletada.

SELECT FROM
2 test;

no rows selected;



FIM DE CAPTULO
Finalidade do Captulo Mostrar com Trabalhar com o Dicionrio
de Dados.

O dicionrio de dados serve dentre outras coisas para
possibilitar a visualizao de quais objetos que esto
disponveis para manipulao, por exemplo: se temos acesso a
tabelas, views ou etc.
No exemplo abaixo estamos fazendo um select na tabela
user_objects usando o comando 'distinct' com a finalidade de
vermos quais os objetos a serem manipulados.

Vamos ao exemplo:

SQL> SELECT DISTINCT OBECT_TYPE
2 FROM USER_OBECTS;

OBECT_TYPE
-------------
INDEX
SEQUENCE
TABLE



Para vermos quais so as tabelas ou outros objetos que esto a
nossa disposio, ou seja aqueles que temos permisso para
manipul - los temos que fazer um select no dicionrio de dados,
incluindo neste o object_name na tabela user_objects usando o
tipo desejado 'table' ou 'view' e etc.

SELECT OBECT_NAME
FROM USER_OBECTS
WHERE OBECT_TYPE = 'TABLE'

OBECT_NAME
---------------------
FUNCIONRIO
SEO
S_CUSTOMER
S_DEPT
S_EMP
S_IMAE
S_INVENTORY
S_ITEM
S_LONTEXT
S_ORD
S_PRODUCT
S_REION
S_TITLE
S_WAREHOUSE

14 rows selected.



Ainda usando o dicionrio de dados podemos verificar quais so as
constraints de uma tabela, bom lembrar que estamos fazendo uma
consulta na tabela USER_CONSTRAITS que assim como a USER_OBECTS
pertence ao dicionrio de dados.


SQL> select constraint_name,constraint_type,search_condition,
r_constraint_name
2 from user_constraints
3 where table_name = 'S_EMP';

CONSTRAINT C SEARCH_CONDITION R_CONSTRAINT_NAME
---------- - ------------------ ---------------------
S_EMP_ID_N C ID IS NOT NULL
N

S_EMP_LAST C LAST_NAME IS NOT N
_NAME_NN ULL

S_EMP_USER C USERID IS NOT NULL
ID_NN

S_EMP_ID_P P


S_EMP_USER U
ID_U

S_EMP_COMM C commission_pct IN
ISSION_PCT (10, 12.5, 15, 17.
_C 5, 20

S_EMP_MANA R S_EMP_ID_P
ER_ID_F

CONSTRAINT C SEARCH_CONDITION R_CONSTRAINT_NAME
---------- - ------------------ ---------------------

S_EMP_DEPT R S_DEPT_ID_P
_ID_F

S_EMP_TITL R S_TITLE_TITLE_P
E_F


9 rows selected.

Tentando refinar ainda mais o exemplo acima vamos verificar quais
so as constraints referentes as colunas de uma determinada
tabela que no caso a s_emp.

Vamos ao Exemplo:

SQL>
SELECT CONSTRAINT_NAME,COLUMN_NAME
FROM USER_CONS_COLUMNS
WHERE TABLE_NAME ='S_EMP'


CONSTRAINT_NAME COLUMN_NAME
------------------------- -------------------
S_EMP_COMMISSION_PCT_C COMMISSION_PCT
S_EMP_DEPT_ID_F DEPT_ID
S_EMP_ID_NN ID
S_EMP_ID_P ID
S_EMP_LAST_NAME_NN LAST_NAME
S_EMP_MANAER_ID_F MANAER_ID
S_EMP_TITLE_F TITLE
S_EMP_USERID_NN USERID
S_EMP_USERID_U USERID

9 rows selected.

FIM DE CAPTULO






Finalidade deste captulo apresentar o uso de funes de grupo
do cmdo group by, funes de grupo MAX,MIN,SUM,AV e
ainda o uso do HAVIN:
Dica importante: geralmente o que est dentro do comando select
deve estar no group by.

Neste exemplo estamos vendo o uso da funo AV que tem a
finalidade de trazer a mdia de uma determinada soma. Estamos
tambm usando a funo MAX e MIN que tem como funo trazer o
mximo e o mnimo valor. Tambm temos a funo SUM que faz a soma
de valores de colunas, todas essas funes so funes de grupo.
Ainda no exemplo abaixo temos o uso da funo UPPER que
transforma o contedo a ser pesquisado e a funo LIE que faz a
pesquisa somente nos registros que comearem por 'sales'.

SQL> select avg(SALARY,MAX(SALARY,MIN(SALARY,
2 SUM(SALARY
3 FROM S_EMP
4 WHERE UPPER(TITLE LIE 'SALES';

AV(SALARY MAX(SALARY MIN(SALARY SUM(SALARY
----------- ----------- ----------- -----------
1476 1525 1400 7380



Neste exemplo abaixo, temos o menor nome e o maior nome dentro da
ordem alfabtica, demostrando que no somente os valores
numricos que so manipulveis com as funes MIN e MAX, bom
salientar que as datas tambm so passveis de manipulao.

Vamos ao exemplo:

SQL> select MIN(LAST_NAME,MAX(LAST_NAME
2 FROM S_EMP;

MIN(LAST_NAME MAX(LAST_NAME
------------------------- -------------------------
Biri Velasquez







No exemplo abaixo estamos tentando selecionar o ID de
departamento igual a 41 trazendo seu numero de repeties, mas
no d certo pois a funo COUNT de grupo e no estamos usando
o ROUP BY.

Vamos ao exemplo:

SQL> select dept_id, count( "number"
2 from s_emp
3 where dept_id = 41;
select dept_id, count( "number"

ERROR at line 1:
ORA-00937: not a single-group group function


Fazendo o select abaixo temos quantas vezes o dept 41 se repete.

SQL> select dept_id
2 from s_emp
3 where dept_id = 41;

DEPT_ID
---------
41
41
41
41

Agora usando a funo de grupo COUNT( que no caso esta contando
a quantidade de registros onde o dept_id igual a 41 ou seja
quantas vezes ele se repete, teremos o grupamento feito. O que
est no select deve estar no group by.

Vamos ao exemplo:

SQL> select dept_id, count( "number"
2 from s_emp
3 where dept_id = 41
4 group by dept_id;

DEPT_ID number
--------- ---------
41 4


Agora estamos contando quantos registros temos para cada
CREDIT_RATIN da tabela s_customer.


SQL> select credit_rating,count( " custo"
2 from s_customer
3 group by credit_rating;

CREDIT_RA custo
--------- ---------
EXCELLENT 9
OOD 3
POOR 3

No prximo exemplo bom destacar o uso do NOT LIE onde
determina que no seja trazido registros parecidos com uma uma
certa condio. Veja tambm o uso da funo de grupo SUM que trs
a soma dos salrios.

SQL> select title, sum(salary soma_total
2 from s_emp
3 where title not like 'VP'
4 group by title
5 order by
6 sum(salary;

TITLE SOMA_TOTAL
------------------------- ----------
President 2500
Warehouse Manager 6157
Sales Representative 7380
Stock Clerk 9490

Um outro exemplo do uso de ORDER BY, onde estamos grupando por
Title.

SQL> select title,max(salary
2 from s_emp
3 group by title;

TITLE MAX(SALARY
------------------------- -----------
President 2500
Sales Representative 1525
Stock Clerk 1400
VP, Administration 1550
VP, Finance 1450
VP, Operations 1450
VP, Sales 1400
Warehouse Manager 1307

8 rows selected.


Nossa inteno no select abaixo fazermos a mdia dos salrios
dos campos da coluna SALARY da tabela s_emp, e trazer a tela
somente a mdia que der acima de 2000.
No d certo porque no usamos a clausula where dentro do group
by mas sim a funo HAVIN, isso quando queremos trazer dados a
tela obedecendo uma certa condio.

SQL> SELECT DEPT_ID,AV(SALARY
2 FROM S_EMP
3 WHERE AV(SALARY > 2000
4 ROUP BY DEPT_ID;
WHERE AV(SALARY > 2000

ERROR at line 3:
ORA-00934: group function is not allowed here

Veja a maneira correta de se fazer o exerccio anterior onde
usamos a funo HAVIN que se d da seguinte forma , sempre aps
o group by.

SQL> SELECT DEPT_ID,AV(SALARY
2 FROM S_EMP
3 ROUP BY DEPT_ID
4 HAVIN AV(SALARY > 2000;

DEPT_ID AV(SALARY
--------- -----------
50 2025S


No exemplo abaixo estamos selecionando, contando e separando em
grupos os departamentos isso pelo dept_id e depois o title,
perceba a sequncia do grupo.

SQL> select dept_id,title, count(
2 from s_emp
3 group by dept_id,title;

DEPT_ID TITLE COUNT(
--------- ------------------------- ---------
10 VP, Finance 1
31 Sales Representative 1
31 VP, Sales 1
32 Sales Representative 1
33 Sales Representative 1
34 Sales Representative 1
34 Stock Clerk 1
35 Sales Representative 1
41 Stock Clerk 2
41 VP, Operations 1
41 Warehouse Manager 1
42 Stock Clerk 2
42 Warehouse Manager 1
43 Stock Clerk 2
43 Warehouse Manager 1
44 Stock Clerk 1
44 Warehouse Manager 1
45 Stock Clerk 2
45 Warehouse Manager 1
50 President 1
50 VP, Administration 1

21 rows selected.


Agora estamos grupando primeiro pelo title e depois pelo dept_id,
veja a diferena.

SQL> select title,dept_id, count(
2 from s_emp
3 group by title,dept_id;

TITLE DEPT_ID COUNT(
------------------------- --------- ---------
President 50 1
Sales Representative 31 1
Sales Representative 32 1
Sales Representative 33 1
Sales Representative 34 1
Sales Representative 35 1
Stock Clerk 34 1
Stock Clerk 41 2
Stock Clerk 42 2
Stock Clerk 43 2
Stock Clerk 44 1
Stock Clerk 45 2
VP, Administration 50 1
VP, Finance 10 1
VP, Operations 41 1
VP, Sales 31 1
Warehouse Manager 41 1
Warehouse Manager 42 1
Warehouse Manager 43 1
Warehouse Manager 44 1
Warehouse Manager 45 1



Observe o uso do HAVIN em substituio a clausula WHERE, alm de
outros SELECTS.

Quando quisermos trazer um registro que inicie por uma letra
qualquer temos podemos usamos o cmdo LIE procedendo da seguinte
forma:

SQL> select last_name, title
1 from s_emp
2 where last_name like 'V'


LAST_NAME TITLE
------------------------- -------------------------
Velasquez President

No exemplo abaixo estamos fazendo a seleo de todos os cargos de
funcionrios existentes assim como contando seus componentes
COUNT e ainda trazendo as suas respectivas medias salariais
usando a funo AV, multiplicadas por 12.


SQL> SELECT TITLE, 12 AV(SALARY " Salrio Anual",
2 count( " numero de funcionrios"
3 from s_emp
4 group by title;

TITLE Salrio Anual numero de funcionrios
President $30,000.00 1
Sales Representative $17,712.00 5
Stock Clerk $11,388.00 10
VP, Administration $18,600.00 1
VP, Finance $17,400.00 1
VP, Operations $17,400.00 1
VP, Sales $16,800.00 1
Warehouse Manager $14,776.80 5

8 rows selected.

Um pouco diferente do exemplo anterior o abaixo est
primeiramente formatando a coluna Salrio Anual para receber
valores aps ter sido feito um select em TITLE. Estamos
multiplicando por 12 a soma da mdia dos salrios feita pela
funo AV, e ento usamos a funo COUNT para contar o numero de
funcionrios de s_emp grupados por title e que tenha no mximo 2
funcionrios, olhando para o exemplo anterior podemos entender
melhor e tambm destacar que o HAVIN est fazendo a funo de um
WHERE dentro do ROUP BY.

Vamos ao Exemplo:

SQL> column " Salrio Anual" FORMAT $99,999.99
SQL> SELECT TITLE, 12 AV(SALARY " Salrio Anual",
2 count( " numero de funcionrios"
3 from s_emp
4 group by title
5 having count( > 2;

TITLE Salrio Anual numero de funcionrios
------------------------- -------------- --------------------
Sales Representative $17,712.00 5
Stock Clerk $11,388.00 10
Warehouse Manager $14,776.80 5


Mais um exemplo do uso do HAVIN:

SQL> select title,sum(salary soma
2 from s_emp
3 where title not like'VP'
4 group by title
5 having sum(salary > 5000
6 order by sum(salary;

TITLE SOMA
------------------------- ---------
Warehouse Manager 6157
Sales Representative 7380
Stock Clerk 9490

FIM DE CAPTULO
Finalidade do captulo demostrar como criar RANTS.

Para criar um novo usurio (isto executado pelo DBA devemos
proceder da seguinte forma, "NOVO" o nome do usurio e
IDENTIFIED BY "tiger" sua senha.

SQL> CREATE USER NOVO
2 IDENTIFIED BY TIER;

User created.

Agora aps termos criado um novo usurio vamos dar-lhe os seus
RANTS ou seja as permisses devidas como,delete,update e etc,
veja como se processa isto e veja tambm a sintaxe:

SQL> RANT create table, create sequence, create view
2 to NOVO;

rant succeeded.

Criando uma ROLE de privilgios para ser usada para vrios
usurios, uma role o conjunto de privilgios que guardamos
armazenados com a finalidade de proporcionar uma facilitao de
manuseio na hora de se conceder privilgios, evitando a digitao
de todos os privilgios, passando a ter que digitar somente o
nome da role. No exemplo, o nome da ROLE "manager" e por
enquanto no existe nenhum privilgio dentro dela.

SQL> CREATE ROLE manager;

Role created.

Agora estamos definindo os privilgios para a ROLE "manager", que
so: criar tabela e view. Observe como se processa isto:

SQL> RANT create table, create view TO manager;

rant succeeded.

Agora que nossa ROLE j tem os privilgios definidos, no exemplo
abaixo vou pass-la para algum usurio. No caso o usurio "NOVO"
est recebendo os RANTS da ROLE MANAER, que so somente criar
tabela e view:



SQL> RANT MANAER TO NOVO;

rant succeeded

Como mudar a senha de um usurio: no caso estamos mudando do user
novo que tinha como "senha" ou seja IDENTIFIED igual a TIER
passando a ser LION.

SQL> ALTER USER NOVO IDENTIFIED BY LION;

User altered.


Agora estamos dando um novo RANT para o USER "NOVO" referente a
tabela s_emp, neste caso o RANT s de consulta.

SQL> RANT select
2 ON s_emp
3 TO novo;

rant succeeded.

O exemplo abaixo mostra como adicionar um novo RANT a uma ROLE,
relacionado com colunas especficas de uma tabela no caso s_dept
e atribuindo a permisso de update para o usurio "NOVO" e para
a ROLE "manager".

SQL> RANT update(name,region_id
2 ON s_dept
3 TO novo,manager;

rant succeeded.

Este exemplo mostra como dar RANT para um USER em uma tabela e
este usurio ter permisso de passar este mesmo RANT para outros
usurios.

SQL> RANT select
2 ON s_emp
3 TO scott
4 WITH RANT OPTION;

rant succeeded.




Agora estou tornando publico de todos o SELECT a tabela S_DEPT
referente ao usurio UIMA, ou seja todos podem dar select a
tabela s_dept do usurio UIMA.

SQL> RANT SELECT
2 ON UIMA.S_DEPT
3 TO PUBLIC;

rant succeeded.


Para sabermos quais privilgios ns possumos podemos acessar no
DICIONRIO DE DADOS nas seguintes tabelas:

ROLE_SYS_PRIVS
ROLE_TAB_PRIVS
USER_ROLE_PRIVS
USER_TAB_PRIVS_MADE
USER_TAB_PRIVS_RECD
USER_COL_PRIVS_MADE
USER_COL_PRIVS_RECD


Como ver as ROLES que eu tenho acesso:

SQL> SELECT RANTED_ROLE,OS_RANTED
2 FROM USER_ROLE_PRIVS
3 WHERE USERNAME = 'UIMA';

RANTED_ROLE OS_
------------------------------ ---
CONNECT NO
DBA NO
MANAER NO



Para tirar os privilgios de um USER procede-se da seguinte
forma:

SQL> REVOE select
2 ON s_emp
3 FROM NOVO;

Revoke succeeded.


No exemplo acima estamos tirando os privilgios de select do USER
NOVO.


Como criar sinnimo:
Criando um sinnimo para uma tabela: no caso est sendo criado um
sinnimo com o nome "HXXH" para a tabela s_dept pertencente a
alice:

SQL> CREATE SYNONYM HXXH
FOR alice.s_dept;
Synonym created.

Agora estamos criando um sinnimo para uma VIEW, nossa VIEW se
chama dept_sum_vu e o nome do sinnimo criado d_sum:

SQL> create SYNONYM d_sum
2 for dept_sum_vu;

Synonym created.


Agora estamos criando um sinnimo publico, o nome dele "DDD" e
referente a tabela s_dept de alice:

SQL> create public SYNONYM DDD
2 FOR alice.s_dept;

Synonym created.

Para dropar um sinnimo simples:

SQL> DROP SYNONYM d_sum;

Synonym dropped.

FIM DE CAPTULO









Finalidade do Captulo Tratar Sobre INDEX e OIN e OUTER OIN:

INDEX:

Uma INDEX pode ser criada automaticamente(quando criada uma P
ou U constraint em uma tabela ou manualmente. Para delatarmos
uma INDEX temos que usar o cmdo DROP INDEX:

Vamos ao Exemplo:

SQL> DROP INDEX s_emp_last_name_idx;

Index dropped.

Para criar uma INDEX usa-se o cmdo CREATE INDEX:

Vamos ao Exemplo:

SQL> CREATE INDEX S_EMP_last_name_idx
2 on S_EMP(last_name;

Index created.

Para selecionar as INDEX de uma tabela faz-se um SELECT na tabela
USER_INDEXES e USER_IND_COLUMNS:


O uso do OIN:

oin a ligao que fazemos entre duas tabelas na pesquisa de
dados, necessariamente deve existir em um join a chave primaria
fazendo relao com uma chave estrangeira, esta a condio e
ligao.
No exemplo abaixo estamos selecionando o last_name e dept_id da
tabela s_emp e tambm selecionando a coluna name da tabela s_dept
isto onde a coluna id de s_dept for igual a coluna dept_id de
s_emp, completando assim a condio do OIN.
Vamos ao exemplo:

SQL> SELECT S_EMP.LAST_NAME,S_EMP.DEPT_ID,S_DEPT.NAME
2 FROM S_EMP,S_DEPT
3 WHERE S_EMP.DEPT_ID = S_DEPT.ID;

LAST_NAME DEPT_ID NAME
------------------------- --------- ---------------------
Velasquez 50 Administration
Ngao 41 Operations
Nagayama 31 Sales
Quick-To-See 10 Finance
Ropeburn 50 Administration
Urguhart 41 Operations
Menchu 42 Operations
Biri 43 Operations
Catchpole 44 Operations
Havel 45 Operations
Magee 31 Sales
iljum 32 Sales
Sedeghi 33 Sales
Nguyen 34 Sales
Dumas 35 Sales
Maduro 41 Operations
Smith 41 Operations
Nozaki 42 Operations
Patel 42 Operations
Newman 43 Operations
Markarian 43 Operations



No exemplo abaixo como no anterior temos a realizao de um OIN.

Vamos ao exemplo.

SQL> SELECT S_DEPT.ID " COD DO DEPT",
2 S_REION.ID "COD DA RE",
3 S_REION.NAME"NOME DA REIO"
4 FROM S_DEPT,S_REION
5 WHERE S_DEPT.REION_ID = S_REION.ID;

COD DO DEPT COD DA RE NOME DA REIO
------------ ---------- -------------------------
10 1 North America
31 1 North America
32 2 South America
33 3 Africa Middle East
34 4 sia
35 5 Europe
41 1 North America
42 2 South America
43 3 Africa Middle East
44 4 sia
45 5 Europe
50 1 North America

12 rows selected.



No exemplo abaixo temos mais um exemplo de join onde temos o uso
de apelidos para as tabelas manipuladas, importante observar
como usado o apelido e como este tem que ser referenciado no
FROM, no exemplo abaixo vemos o apelido de "E" para a tabela
S_EMP, de "D" para a tabela S_DEPT. Outra caracterstica
importante no exemplo o uso do OIN onde relacionamos as duas
tabelas atravs da chave estrangeira. O uso do INITCAP serve para
procurarmos o registro que comece com a letra maiscula


SQL> select E.last_name,E.dept_id,
2 D.name
3 from s_emp E,s_dept D
4 where e.dept_id = D.id
5 and initcap(E.last_name='Menchu';

LAST_NAME DEPT_ID NAME
------------------------- --------- -------------------------
Menchu 42 Operations


No exemplo abaixo temos a realizao de dois OINS, uso do AND no
exemplo abaixo proporciona a adio de mais de uma condio ou
seja alm do join entre s_emp e s_dept tambm ocorre um oin
entre s_region e s_dept proporcionado pelo uso do AND. Tambm
est sendo usado um novo AND colocando a commission_pct da tabela
s_emp > 0.


Vamos ao exemplo:

SQL> select E.last_name,R.name,E.commission_pct
2 from s_emp E, s_dept D, s_region R
3 where E.dept_id = D.id
4 and D.region_id = R.id
5 and E.commission_pct > 0;



LAST_NAME NAME COMMISSION_PCT
--------------------------------------- --------------
Magee North America 10
iljum South America 12.5
Sedeghi Africa Middle East 10
Nguyen sia 15
Dumas Europe 17.5


No exemplo abaixo estamos mostrando um join que traz todos os
registros que satisfaam a condio da clausula where ou seja
traz somente aquele que satisfao o OIN no traz os registros
que contem espaos em branco, em funo da relao entre as duas
tabelas no caso entre s_emp e s_customer. Mas e se quisermos que
pesquisar inclusive os registros que no tem relacionamento, ou
seja que estejam com o espao em branco Para isso temos que
acrescentarmos o sinal de (.

Vamos ao Exemplo:

SQL> select e.last_name,e.id,c.name
2 from s_emp e, s_customer c
3 where e.id = c.sales_rep_id
4 order by e.id;

LAST_NAME ID NAME
---------------------- --------- ---------------------------
Magee 11 Womansport
Magee 11 Beisbol Si
Magee 11 Ojibway Retail
Magee 11 Big ohn's Sports Emporium
iljum 12 Unisports
iljum 12 Futbol Sonora
Sedeghi 13 Hamada Sport
Nguyen 14 Simms Athletics
Nguyen 14 Delhi Sports
Dumas 15 am's Sporting oods
Dumas 15 Sportique
Dumas 15 Sporta Russia
Dumas 15 uhn's Sports
Dumas 15 Muench Sports



O exemplo a seguir idntico ao anterior com a diferena que
est acrescido do sinal de ( para, mesmo satisfazendo a
clausula where, traga os registros que no tenham satisfeito a
condio de relacionamento da clausula where, no caso, estamos
ento fazendo um OUTER OIN pegando o LAST_NAME e o ID da tabela
s_emp e o NAME da tabela s_customer onde o id da tabela s_emp
corresponda ao sales_rep_id dentro da tabela s_customer e com o
sinal de ( traga tambm os NAME de s_customer que no tenham
relao com s_emp.

SQL> select e.last_name,e.id,c.name
2 from s_emp e, s_customer c
3 where e.id ( = c.sales_rep_id
4 order by e.id;

LAST_NAME ID NAME
------------------------- --------- ------------------------
Magee 11 Womansport
Magee 11 Beisbol Si
Magee 11 Ojibway Retail
Magee 11 Big ohn's Sports Empori
iljum 12 Unisports
iljum 12 Futbol Sonora
Sedeghi 13 Hamada Sport
Nguyen 14 Simms Athletics
Nguyen 14 Delhi Sports
Dumas 15 am's Sporting oods
Dumas 15 Sportique
Dumas 15 Muench Sports
Dumas 15 Sporta Russia
Dumas 15 uhn's Sports
Sweet Rock Sports

15 rows selected.




FINAL DE CAPTULO
Finalidade do captulo mostrar o uso do BETWEEN.

No exemplo a seguir estamos selecionando as colunas
ename,job,sal da tabela EMP e a coluna RADE da tabela SALRADE,
onde atravs do comando BETWEEN AND ocorre uma pesquisa na tabela
SALRADE nas colunas LOSAL e HISAL onde comparamos seus valores
com os valores dos campos da coluna SAL de EMP trazendo somente
aqueles valores que estejam entre os de LOSAL e HISAL. No exemplo
no ocorre um OIN mas uma simples pesquisa em uma outra tabela
para que seja efetuada uma comparao.

SQL> select e.ename,e.job,e.sal,s.grade
2 from emp e, salgrade s
3 where e.sal between s.losal and s.hisal

ENAME OB SAL RADE
---------- --------- --------- ---------
SMITH CLER 800 1
ADAMS CLER 1100 1
AMES CLER 950 1
WARD SALESMAN 1250 2
MARTIN SALESMAN 1250 2
MILLER CLER 1300 2
ALLEN SALESMAN 1600 3
TURNER SALESMAN 1500 3
ONES MANAER 2975 4
BLAE MANAER 2850 4
CLAR MANAER 2450 4
SCOTT ANALYST 3000 4
FORD ANALYST 3000 4
IN PRESIDENT 5000 5

14 rows selected.


FINAL DE CAPTULO








Finalidade do captulo mostrar o uso do ORDER BY.

O exemplo abaixo mostra como usar o comando order by, onde no
caso estamos ordenando a tabela s_emp pelo o last_name, bom
lembrar que sempre o comando order by vem por ltimo na funo
sql.
Vamos ao exemplo:

SELECT LAST_NAME, DEPT_ID,START_DATE
FROM S_EMP
ORDER BY LAST_NAME

LAST_NAME DEPT_ID START_DAT
------------------------- --------- ---------
Biri 43 07-APR-90
Catchpole 44 09-FEB-92
Chang 44 30-NOV-90
Dancs 45 17-MAR-91
Dumas 35 09-OCT-91
iljum 32 18-AN-92
Havel 45 27-FEB-91
Maduro 41 07-FEB-92
Magee 31 14-MAY-90
Markarian 43 26-MAY-91
Menchu 42 14-MAY-90
Nagayama 31 17-UN-91
Newman 43 21-UL-91
Ngao 41 08-MAR-90
Nguyen 34 22-AN-92
Nozaki 42 09-FEB-91
Patel 42 06-AU-91
Patel 34 17-OCT-90
Quick-To-See 10 07-APR-90
Ropeburn 50 04-MAR-90
Schwartz 45 09-MAY-91

LAST_NAME DEPT_ID START_DAT
------------------------- --------- ---------
Sedeghi 33 18-FEB-91
Smith 41 08-MAR-90
Urguhart 41 18-AN-91
Velasquez 50 03-MAR-90

25 rows selected.


No comando sql order by temos a funo desc que vem com a
finalidade de colocar os dados dentro da coluna em ordem
decrescente. No exemplo a seguir estamos colocando por ordem
decrescente a coluna start_date da tabela s_emp.



SQL> SELECT LAST_NAME, DEPT_ID,START_DATE
2 FROM S_EMP
3 ORDER BY START_DATE DESC;

LAST_NAME DEPT_ID START_DAT
------------------------- --------- ---------
Catchpole 44 09-FEB-92
Maduro 41 07-FEB-92
Nguyen 34 22-AN-92
iljum 32 18-AN-92
Dumas 35 09-OCT-91
Patel 42 06-AU-91
Newman 43 21-UL-91
Nagayama 31 17-UN-91
Markarian 43 26-MAY-91
Schwartz 45 09-MAY-91
Dancs 45 17-MAR-91
Havel 45 27-FEB-91
Sedeghi 33 18-FEB-91
Nozaki 42 09-FEB-91
Urguhart 41 18-AN-91
Chang 44 30-NOV-90
Patel 34 17-OCT-90
Menchu 42 14-MAY-90
Magee 31 14-MAY-90
Quick-To-See 10 07-APR-90
Biri 43 07-APR-90

LAST_NAME DEPT_ID START_DAT
------------------------- --------- ---------
Ngao 41 08-MAR-90
Smith 41 08-MAR-90
Ropeburn 50 04-MAR-90
Velasquez 50 03-MAR-90

25 rows selected.




Agora vamos mostrar os dados do resultado do mesmo select
anterior sem o uso da funo desc para o order by, observe a
diferena da ordenao em relao as datas.

SQL> SELECT LAST_NAME, DEPT_ID,START_DATE
2 FROM S_EMP
3 ORDER BY START_DATE;

LAST_NAME DEPT_ID START_DAT
------------------------- --------- ---------
Velasquez 50 03-MAR-90
Ropeburn 50 04-MAR-90
Ngao 41 08-MAR-90
Smith 41 08-MAR-90
Quick-To-See 10 07-APR-90
Biri 43 07-APR-90
Menchu 42 14-MAY-90
Magee 31 14-MAY-90
Patel 34 17-OCT-90
Chang 44 30-NOV-90
Urguhart 41 18-AN-91
Nozaki 42 09-FEB-91
Sedeghi 33 18-FEB-91
Havel 45 27-FEB-91
Dancs 45 17-MAR-91
Schwartz 45 09-MAY-91
Markarian 43 26-MAY-91
Nagayama 31 17-UN-91
Newman 43 21-UL-91
Patel 42 06-AU-91
Dumas 35 09-OCT-91

LAST_NAME DEPT_ID START_DAT
------------------------- --------- ---------
iljum 32 18-AN-92
Nguyen 34 22-AN-92
Maduro 41 07-FEB-92
Catchpole 44 09-FEB-92

25 rows selected.







O exemplo seguinte mostra como usar a posio da coluna dentro do
comando sql para definir a ordenao dos registros por aquela
coluna, no caso abaixo estamos ordenando nossos dados pela coluna
numero 4 que corresponde a START_DATE de S_EMP.

Vamos ao exemplo:

SQL> SELECT ID,LAST_NAME,FIRST_NAME,START_DATE
2 MANAER_ID, SALARY
3 FROM S_EMP
4 ORDER BY 4;

ID LAST_NAME FIRST_NAME MANAER_I SALARY
-------------- ------------------------- --------- ---------
1 Velasquez Carmen 03-MAR-90 2500
5 Ropeburn Audry 04-MAR-90 1550
2 Ngao LaDoris 08-MAR-90 1450
17 Smith eorge 08-MAR-90 940
4 Quick-To-See Mark 07-APR-90 1450
8 Biri Ben 07-APR-90 1100
7 Menchu Roberta 14-MAY-90 1250
11 Magee Colin 14-MAY-90 1400
23 Patel Radha 17-OCT-90 795
22 Chang Eddie 30-NOV-90 800
6 Urguhart Molly 18-AN-91 1200
18 Nozaki Akira 09-FEB-91 1200
9 Catchpole Antoinette 09-FEB-92 1300

25 rows selected.


Agora alm de ordenar pela coluna numero 4 estamos tambm
colocando em ordem decrescente usando para isto o cmdo desc.

SQL> SELECT ID,LAST_NAME,FIRST_NAME,START_DATE
2 MANAER_ID, SALARY
3 FROM S_EMP
4 ORDER BY 4 DESC;

ID LAST_NAME FIRST_NAME MANAER_I SALARY
-------- ------------------------- --------- ---------
9 Catchpole Antoinette 09-FEB-92 1300
16 Maduro Elena 07-FEB-92 1400
14 Nguyen Mai 22-AN-92 1525
12 iljum Henry 18-AN-92 1490
No prximo exemplo o comando order by esta agrupando por
departamento com o dept_id e depois por salrio (dentro do
grupo departamento podemos constatar a melhor verificao do
exemplo no departamento 41 onde o salrio vem por ordem
decrescente.

SQL> SELECT LAST_NAME,DEPT_ID,SALARY
2 FROM S_EMP
3 ORDER BY DEPT_ID,SALARY DESC;

LAST_NAME DEPT_ID SALARY
------------------------- --------- ---------
Quick-To-See 10 1450
Nagayama 31 1400
Magee 31 1400
iljum 32 1490
Sedeghi 33 1515
Nguyen 34 1525
Patel 34 795
Dumas 35 1450
Ngao 41 1450
Maduro 41 1400
Urguhart 41 1200
Smith 41 940
Menchu 42 1250
Nozaki 42 1200
Patel 42 795
Biri 43 1100
Markarian 43 850
Newman 43 750
Catchpole 44 1300
Chang 44 800
Havel 45 1307

LAST_NAME DEPT_ID SALARY
------------------------- --------- ---------
Schwartz 45 1100
Dancs 45 860
Velasquez 50 2500
Ropeburn 50 1550

25 rows selected.

Observao: se colocarmos duas ordenaes incompatveis de
execuo, o sql ir reconhecer a primeira da sequncia, observe
que o exemplo abaixo mostra claramente isto. Observe tambm o
departamento 41, onde o sql ordena primeiro por departamento e
depois por nome (last_name e despreza a coluna salary porque
dentro da prioridade ela a ltima.

SQL> SELECT LAST_NAME,DEPT_ID,SALARY
2 FROM S_EMP
3 ORDER BY DEPT_ID, LAST_NAME, SALARY DESC;

LAST_NAME DEPT_ID SALARY
------------------------- --------- ---------
Quick-To-See 10 1450
Magee 31 1400
Nagayama 31 1400
iljum 32 1490
Sedeghi 33 1515
Nguyen 34 1525
Patel 34 795
Dumas 35 1450
Maduro 41 1400
Ngao 41 1450
Smith 41 940
Urguhart 41 1200
Menchu 42 1250
Nozaki 42 1200
Patel 42 795
Biri 43 1100
Markarian 43 850
Newman 43 750
Catchpole 44 1300
Chang 44 800
Dancs 45 860

LAST_NAME DEPT_ID SALARY
------------------------- --------- ---------
Havel 45 1307
Schwartz 45 1100
Ropeburn 50 1550
Velasquez 50 2500

25 rows selected.


FINAL DE CAPTULO
Finalidade do captulo mostrar o uso do LENTH e tambm como
concatenar.


O uso do length: serve par contar a quantidade de espaos,
incluindo caracteres que um determinado registro ocupa.
O uso do "substr" : serve para localizar de forma fsica
determinadas posies de um determinado registro.
No exemplo abaixo vemos como que o cmdo "substr" ajuda a
encontrarmos determinadas posies dentro de uma clausula where.


SQL> SELECT name, LENTH(name
2 FROM S_PRODUCT
3 WHERE SUBSTR(NAME,1,5 = 'Black';

NAME LENTH(NAME
-------------------- ------------
Black Hawk nee Pads 20
Black Hawk Elbow Pads 21



Concatenando colunas distantes usando o CONCAT, observe que
estamos concatenado duas colunas e jogando-as dentro de uma mesma
coluna:

SQL> SELECT CONCAT(NAME,COUNTRY CLIENTE
2 FROM S_CUSTOMER
3 WHERE UPPER (CREDIT_RATIN = 'OOD'
4 ;

CLIENTE
---------------------------------------------------
Delhi SportsIndia
Sweet Rock SportsNigeria
Muench Sportsermany


FINAL DE CAPTULO
Finalidade do captulo mostrar algumas manipulaes com datas:

No prximo exemplo vemos o uso do sysdate que corresponde a data
do sistema, que est sendo subtrado pela coluna start_date e
dividido por 7 para verificar quantas semanas existem entre a
data do start_date e sysdate isto referente ao departamento 43.

SQL> SELECT LAST_NAME, (SYSDATE-START_DATE7 SEMANAS
2 FROM S_EMP
3 WHERE DEPT_ID = 43;

LAST_NAME SEMANAS
------------------------- ---------
Biri 397.5229
Newman 330.38004
Markarian 338.38004


O exemplo seguinte deveria mostrar em tenure a quantidade de
meses existentes entre sysdate e start_date e depois usando o
comdo "add_months" mostrar em review a data correspondente a 6
meses a mais de start_date, mas no mostra porque no satisfaz a
clausula where pois pede que traga os dados entre o sysdate e o
start_date em 48 meses, coisa que no existe:

Vamos ao Exemplo:

SQL> SELECT ID,START_DATE,
2 MONTHS_BETWEEN( SYSDATE-START_DATE TENURE,
3 ADD_MONTHS(START_DATE,6 REVIEW
4 FROM S_EMP
5 WHERE MONTHS_BETWEEN (SYSDATE,START_DATE48;

no rows selected

Agora no exemplo abaixo, satisfazendo a clausula where da
quantidade de meses na funo between podemos ver na coluna
tenure a quantidade de meses entre o sysdate e start_date e em
rewiew mostra o start_date acrescido de 6 meses.





Vamos ao Exemplo:

SQL> SELECT ID,START_DATE,
2 MONTHS_BETWEEN(SYSDATE,START_DATE TENURE,
3 ADD_MONTHS(START_DATE,6 REVIEW
4 FROM S_EMP
5 WHERE MONTHS_BETWEEN (SYSDATE,START_DATE72;

ID START_DAT TENURE REVIEW
--------- --------- --------- ---------
9 09-FEB-92 69.311978 09-AU-92
12 18-AN-92 70 18-UL-92
14 22-AN-92 69.892624 22-UL-92
16 07-FEB-92 69.376495 07-AU-92

Uma nova verso do exemplo anterior:

SQL> SELECT ID,START_DATE,
2 MONTHS_BETWEEN(SYSDATE,START_DATE TENURE,
3 ADD_MONTHS(START_DATE,6 REVIEW
4 FROM S_EMP
5 WHERE MONTHS_BETWEEN (SYSDATE,START_DATE84;

ID START_DAT TENURE REVIEW
--------- --------- --------- ---------
3 17-UN-91 77.054026 17-DEC-91
6 18-AN-91 82 18-UL-91
9 09-FEB-92 69.31209 09-AU-92
10 27-FEB-91 80.731445 27-AU-91
12 18-AN-92 70 18-UL-92
13 18-FEB-91 81 18-AU-91
14 22-AN-92 69.892736 22-UL-92
15 09-OCT-91 73.31209 09-APR-92
16 07-FEB-92 69.376607 07-AU-92
18 09-FEB-91 81.31209 09-AU-91
19 06-AU-91 75.408865 06-FEB-92
20 21-UL-91 75.924994 21-AN-92
21 26-MAY-91 77.763703 26-NOV-91
22 30-NOV-90 83.634671 31-MAY-91
24 17-MAR-91 80.054026 17-SEP-91
25 09-MAY-91 78.31209 09-NOV-91

16 rows selected.



A funo trunc e round:
O exemplo abaixo mostra como usar a funo round com a seguinte
caracterstica:
O round respeita o dia dos meses, se for maior que 15 arredonda
para o inicio do prximo ms, se no for vai para o inicio do
ms que se encontra.
O comando trunc trunca sempre para o inicio do ms que se
encontra.

Vamos ao Exemplo:

SQL> SELECT ID,START_DATE,
2 ROUND(START_DATE,'MONTH',
3 TRUNC(START_DATE,'MONTH'
4 FROM S_EMP
5 WHERE START_DATE LIE '91';

ID START_DAT ROUND(STA TRUNC(STA
--------- --------- --------- ---------
3 17-UN-91 01-UL-91 01-UN-91
6 18-AN-91 01-FEB-91 01-AN-91
10 27-FEB-91 01-MAR-91 01-FEB-91
13 18-FEB-91 01-MAR-91 01-FEB-91
15 09-OCT-91 01-OCT-91 01-OCT-91
18 09-FEB-91 01-FEB-91 01-FEB-91
19 06-AU-91 01-AU-91 01-AU-91
20 21-UL-91 01-AU-91 01-UL-91
21 26-MAY-91 01-UN-91 01-MAY-91
24 17-MAR-91 01-APR-91 01-MAR-91
25 09-MAY-91 01-MAY-91 01-MAY-91

11 rows selected.


FINAL DE CAPTULO. Finalidade do captulo o uso da funo MOD.

A funo mod traz o resto de uma diviso. Neste exemplo temos uma
seleo de registros dentro da tabela s_emp onde o salrio
maior que 1400.

SQL> select LAST_NAME,MOD(SALARY,COMMISSION_PCT
2 FROM S_EMP
3 WHERE SALARY>1400;

LAST_NAME MOD(SALARY,COMMISSION_PCT
------------------------- --------------------------
Velasquez
Ngao
Quick-To-See
Ropeburn
iljum 2.5
Sedeghi 5
Nguyen 10
Dumas 15

8 rows selected.


Agora neste exemplo temos a seleo de todos os
registros onde o salrio maior que 1400 e tambm possui
comisso nula.

SQL> select LAST_NAME,MOD(SALARY,COMMISSION_PCT
2 FROM S_EMP
3 WHERE SALARY>1400
4 and commission_pct is null;

LAST_NAME MOD(SALARY,COMMISSION_PCT
------------------------- --------------------------
Velasquez
Ngao
Quick-To-See
Ropeburn


Neste exemplo temos somente aqueles que ganham mais de 1400 e
possui comisso.

SQL> select LAST_NAME,MOD(SALARY,COMMISSION_PCT
2 FROM S_EMP
3 WHERE SALARY>1400
4 and commission_pct is not null;

LAST_NAME MOD(SALARY,COMMISSION_PCT
------------------------- --------------------------
iljum 2.5
Sedeghi 5
Nguyen 10
Dumas 15



FINAL DE CAPTULO
Finalidade do captulo fazer arredondamentos de valores usando
"ROUND" e o "TRUNC".

Vamos ao Exemplo:
SQL> select round(45.923,2, round(45.923,0,
2 round(45.923,-1
3 from sys.dual;

ROUND(45.923,2 ROUND(45.923,0 ROUND(45.923,-1
--------------- --------------- ----------------
45.92 46 50


SQL> select trunc(45.923,2,trunc(45.923,0,
trunc(45.923,-1
from sys.dual

TRUNC(45.923,2 TRUNC(45.923,0 TRUNC(45.923,-1
--------------- --------------- ----------------
45.92 45 40




FINAL DE CAPTULO
Finalidade do captulo tratar o uso do SELECT,NVL,DISTINCT.

O comando SELECT usado no exemplo abaixo bsico, pois serve
para selecionar todas as linhas da tabela s_dept, no fazendo
neste caso nenhuma distino.

SQL> select from s_dept;

ID NAME REION_ID
--------- ------------------------- ---------
10 Finance 1
31 Sales 1
32 Sales 2
33 Sales 3
34 Sales 4
35 Sales 5
41 Operations 1
42 Operations 2
43 Operations 3
44 Operations 4
45 Operations 5
50 Administration 1

12 rows selected.


Agora o comando select usado para trazer valores de colunas
especificas onde o nome das colunas vem entre vrgulas. A tabela
s_dept tem como colunas, id,name e region_id, mas neste caso s
est sendo trazido id e regiao_id.

Vamos ao Exemplo:

SQL> select ID,REION_ID FROM S_DEPT;

ID REION_ID
--------- ---------
10 1
31 1
32 2
33 3
34 4
35 5
41 1
42 2
43 3
44 4
45 5
50 1

12 rows selected.

No exemplo abaixo estamos mostrando como trazer campos distintos
de uma determinada tabela, ou seja campos que no se repetem. Na
coluna name tem vrios campos repetidos, veja no exemplo:

SQL> SELECT NAME FROM S_DEPT;

NAME
-------------------------
Finance
Sales
Sales
Sales
Sales
Sales
Operations
Operations
Operations
Operations
Operations
Administration

12 rows selected.


Agora usando o comando distinct na coluna name da tabela s_dept
poderemos obter nomes distintos, sem valor repetido para a coluna
name de s_dept.

Vamos ao Exemplo:


SQL> SELECT DISTINCT NAME FROM S_DEPT;

NAME
-------------------------
Administration
Finance
Operations
Sales


Agora podemos ver como separar em grupos sem repetio os nomes
por regio, os nomes aparecem conforme existam nas regies e as
regies que aparecem conforme tenham nomes.

SQL> SELECT DISTINCT NAME,REION_ID
2 FROM S_DEPT;

NAME REION_ID
------------------------- ---------
Administration 1
Finance 1
Operations 1
Operations 2
Operations 3
Operations 4
Operations 5
Sales 1
Sales 2
Sales 3
Sales 4
Sales 5

12 rows selected.

A funo select permite que seja feito expresses aritmticas
manipulando os valores de seus campos. No exemplo abaixo os
valores da coluna salary, esto sendo multiplicados por 12 e
assumem seus novos valores na prpria coluna.


SQL> SELECT LAST_NAME,SALARY 12 FROM
S_EMP;


Exemplo de expresso:

SQL> select id,last_name,round(salary(salary1510
2 ,0 " NOVO SALRIO" FROM S_EMP;

ID LAST_NAME NOVO SALRIO
--------- ------------------------- -------------
1 Velasquez 2875
2 Ngao 1668
3 Nagayama 1610
4 Quick-To-See 1668
5 Ropeburn 1783
6 Urguhart 1380
7 Menchu 1438
8 Biri 1265
9 Catchpole 1495
10 Havel 1503
11 Magee 1610
12 iljum 1714
13 Sedeghi 1742
14 Nguyen 1754
15 Dumas 1668
16 Maduro 1610
17 Smith 1081
18 Nozaki 1380
19 Patel 914
20 Newman 863
21 Markarian 978

ID LAST_NAME NOVO SALRIO
--------- ------------------------- -------------
22 Chang 920
23 Patel 914
24 Dancs 989
25 Schwartz 1265

25 rows selected.

No exemplo abaixo temos o uso da funo nvl, que tem a
finalidade de trazer campos que tem valores nulos atribuindo -
lhes o valor zero.
Vamos ao Exemplo:

SQL> SELECT LAST_NAME, TITLE, 2 SALARYCOMMISSION_PCT100
COMISSAO
3 FROM S_EMP;

LAST_NAME TITLE COMISSAO
------------------------- ------------------------- ---------
Velasquez President
Ngao VP, Operations
Nagayama VP, Sales
Quick-To-See VP, Finance
Ropeburn VP, Administration
Urguhart Warehouse Manager
Menchu Warehouse Manager
Biri Warehouse Manager
Catchpole Warehouse Manager
Havel Warehouse Manager
Magee Sales Representative 140
iljum Sales Representative 186.25
Sedeghi Sales Representative 151.5
Nguyen Sales Representative 228.75
Dumas Sales Representative 253.75
Maduro Stock Clerk
Smith Stock Clerk
Nozaki Stock Clerk
Patel Stock Clerk
Newman Stock Clerk
Markarian Stock Clerk

LAST_NAME TITLE COMISSAO
------------------------- ------------------------- ---------
Chang Stock Clerk
Patel Stock Clerk
Dancs Stock Clerk
Schwartz Stock Clerk

25 rows selected.



Observe que no exemplo anterior os campos com valores nulos
vieram em branco veja agora que usando a funo nvl apareceu o
valor zero nos campos nulos.

SQL> SELECT LAST_NAME, TITLE,
2 SALARYNVL(COMMISSION_PCT,0100 COMISSAO
3 FROM S_EMP;

LAST_NAME TITLE COMISSAO
------------------------- ------------------------- ---------
Velasquez President 0
Ngao VP, Operations 0
Nagayama VP, Sales 0
Quick-To-See VP, Finance 0
Ropeburn VP, Administration 0
Urguhart Warehouse Manager 0
Menchu Warehouse Manager 0
Biri Warehouse Manager 0
Catchpole Warehouse Manager 0
Havel Warehouse Manager 0
Magee Sales Representative 140
iljum Sales Representative 186.25
Sedeghi Sales Representative 151.5
Nguyen Sales Representative 228.75
Dumas Sales Representative 253.75
Maduro Stock Clerk 0
Smith Stock Clerk 0
Nozaki Stock Clerk 0
Patel Stock Clerk 0
Newman Stock Clerk 0
Markarian Stock Clerk 0

LAST_NAME TITLE COMISSAO
------------------------- ------------------------- ---------
Chang Stock Clerk 0
Patel Stock Clerk 0
Dancs Stock Clerk 0
Schwartz Stock Clerk 0

25 rows selected.



Um exemplo de SELECT com vrias funes:

O comando lower serve para transformarmos os dados de pesquisa em
letra minscula, o cmdo initcap serve para converter a primeira
letra em maiscula e o cmdo upper serve para converter em
maisculo, no exemplo abaixo estamos fazendo primeiro uma
concatenao e depois usando a clausula where para trazermos os
registros que tem como inicial as letras vp, com o cmdo like.

Vamos ao Exemplo:

SELECT LOWER(FIRST_NAME' 'LAST_NAME VP,
INITCAP(useridUSERID,
UPPER (TITLE TITLE
FROM S_EMP
WHERE TITLE LIE 'VP'



VP USERID
TITLE
--------------------------------------------------- --------
--------------------
ladoris ngao Lngao VP,
OPERATIONS
midori nagayama Mnagayam VP,
SALES
mark quick-to-see Mquickto VP,
FINANCE
audry ropeburn Aropebur VP,
ADMINISTRATION


Observe no exemplo abaixo que no foi realizada a pesquisa
porque o dado da tabela no corresponde ao formato pedido.

SQL> SELECT FIRST_NAME,LAST_NAME
2 FROM S_EMP
3 WHERE LAST_NAME = 'PATEL';

no rows selected

Agora usando o cmdo " lower " fazemos a converso, para a
pesquisa , para letra minscula possibilitando assim o sucesso da
execuo do exemplo anterior:

SQL> SELECT FIRST_NAME,LAST_NAME
2 FROM S_EMP
3 WHERE LOWER(LAST_NAME = 'patel';

FIRST_NAME LAST_NAME
------------------------- -------------------
Vikram Patel
Radha Patel


Agora usamos o cmdo "upper" para fazermos a converso para
maiscula.

SQL> SELECT FIRST_NAME,LAST_NAME
2 FROM S_EMP
3 WHERE UPPER (LAST_NAME = 'PATEL';

FIRST_NAME LAST_NAME
------------------------- -------------------
Vikram Patel
Radha Patel

FINAL DE CAPTULO

Finalidade do captulo tratar sobre SELF OINS.

O SELF OINS definido por um alto relacionamento ,podemos
descrever o exemplo abaixo da seguinte forma: todos os EMP da
tabela S_EMP possuem uma coluna ID e uma coluna MANAER_ID,
portanto queremos saber quem o gerente de cada funcionrio,
para isso verificamos o MANAER_ID que contem um valor
correspondente ao ID de EMP e ento a partir do valor de
MANAER_ID descobrimos quem o gerente do EMP. No exemplo abaixo
bom verificar a concatenao.

Vamos ao exemplo:

SQL> select worker.last_name ' trabalha para '
2 manager.last_name
3 from s_emp worker, s_emp manager
4 where worker.manager_id = manager.id;

WORER.LAST_NAME'TRABALHAPARA'MANAER.LAST_NAME
-------------------------------------------------------
Ngao trabalha para Velasquez
Nagayama trabalha para Velasquez
Quick-To-See trabalha para Velasquez
Ropeburn trabalha para Velasquez
Urguhart trabalha para Ngao
Menchu trabalha para Ngao
Biri trabalha para Ngao
Catchpole trabalha para Ngao
Havel trabalha para Ngao
Magee trabalha para Nagayama
iljum trabalha para Nagayama
Sedeghi trabalha para Nagayama
Nguyen trabalha para Nagayama
Dumas trabalha para Nagayama
Maduro trabalha para Urguhart
Smith trabalha para Urguhart
Nozaki trabalha para Menchu
Patel trabalha para Menchu
Newman trabalha para Biri
Markarian trabalha para Biri
Chang trabalha para Catchpole
Schwartz trabalha para Havel

24 rows selected.
FINAL DE CAPTULO
Finalidade do captulo tratar sobre SEQUENCE.

Para ver se existe uma sequence selecionamos o objeto no select
object_name colocando a clausula where com o objeto_type igual a
sequence.

SQL> SELECT OBECT_name from user_objects
2 where object_type = 'SEQUENCE';

OBECT_NAME
-------------------------------------------
S_CUSTOMER_ID
S_DEPART_ID
S_DEPT_ID
S_DEPT_ID_SEQ
S_EMP_ID
S_IMAE_ID
S_LONTEXT_ID
S_ORD_ID
S_PRODUCT_ID
S_REION_ID
S_WAREHOUSE_ID
S_WORER
WORER_ID_SEQ

13 rows selected.

O que uma SEQUENCE:

Sequence so nmeros criados pelo ORACLE que fazem a contagem de
registros assumindo valores nicos, servindo de ID, uma SEQUENCE
pode ser usada por mais de uma tabela, cada qual com seus
nmeros, sem que ocorra repetio claro.

O exemplo seguinte mostra como criar uma SEQUENCE, o nome da
SEQUENCE S_TESTE_id, que est relacionada com o id da tabela
TESTE ( tabela que foi criada anteriormente, o INCREMENTE BY
serve para que a SEQUENCE evolua de um valor, o START WITH
serve para que a SEQUENCE comece com o numero 51, o MAXVALUE o
valor mximo que uma SEQUENCE pode assumir, NOCACHE especifica se
ser alocada a memria cash ou no, NOCYCLE serve para
especificar ou no um ciclo de SEQUENCE ou seja os nmeros vo
contando em um ciclo de tempo determinado.



Vamos ao Exemplo:

SQL> CREATE SEQUENCE S_TESTE_id
2 INCREMENT BY 1
3 START WITH 51
4 MAXVALUE 9999999
5 NOCACHE
6 NOCYCLE;

Sequence created.

Como mostrar todas as SEQUENCES que esto disponveis para seu
user:

SQL> select sequence_name, min_value, max_value,
2 increment_by,last_number
3 from user_sequences;

SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY LAST_NUMBER
-------------- --------- --------- ------------ -----------
S_CUSTOMER_ID 1 9999999 1 216
S_DEPT_ID 1 9999999 1 51
S_EMP_ID 1 9999999 1 26
S_IMAE_ID 1 9999999 1 1981
S_LONTEXT_ID 1 9999999 1 1369
S_ORD_ID 1 9999999 1 113
S_PRODUCT_ID 1 9999999 1 50537
S_REION_ID 1 9999999 1 6
S_TESTE 1 9999999 1 51
S_TESTE_ID 1 9999999 1 51
S_WAREHOUSE_ID 1 9999999 1 10502

11 rows selected.

No exemplo abaixo estamos criando uma SEQUENCE para o ID de
s_dept, foi escolhido como nome para a SEQUENCE s_dept_id, sempre
para SEQUENCE usa-se o "S" no comeo do nome da sequence.
SQL> CREATE SEQUENCE S_dept_id
2 INCREMENT BY 1
3 START WITH 51
4 MAXVALUE 9999999
5 NOCACHE
6 NOCYCLE;

Sequence created.

O uso do NEXTVAL:

Agora vamos inserir valores dentro de s_dept sendo que um desses
valores o NEXTVAL que tem como funo trazer para ns o prximo
nmero da SEQUENCE e no caso especifico estamos inserindo em ID o
valor da SEQUENCE.

Veja abaixo:

SQL> insert into s_dept(id,name,region_id
2 values (s_dept_id.NEXTVAL,'FINANCE',2;

1 row created.

Verificando a insero do NEXTVAL, como nossa SEQUENCE inicia em
51 o primeiro valor a ser inserido 51.

SQL> SELECT ID
2 FROM S_DEPT
3 WHERE NAME = 'FINANCE';

ID
---------
51

Alterando uma SEQUENCE: Para se alterar uma SEQUENCE temos que
ter privilgios para tal, os valores passados no so alterados
pela SEQUENCE, o START WITH de uma SEQUENCE no pode ser
alterado, para alter - lo temos que dropar a sequence, dropando-
a no quer dizer que os valores j foram inseridos nas primary
keys sero apagados eles j foram criados.

SQL> EDIT
Wrote file afiedt.buf
1 ALTER SEQUENCE S_DEPT_ID
2 INCREMENT BY 4
3 MAXVALUE 99999
4 CYCLE
5 NOCACHE
SQL>

Sequence altered.



Para dropar uma SEQUENCE temos que seguir os passos a seguir:

SQL> DROP SEQUENCE s_dept_id;

Sequence dropped.

SQL> DROP SEQUENCE S_TESTE;

Sequence dropped.

SQL> DROP SEQUENCE S_TESTE_ID;

Sequence dropped.

FINAL DE CAPTULO































Finalidade do captulo o uso de SUBQUERYS:



Uma subquery um cmdo select dentro de um outro cmdo select onde
retorna uma ou mais linhas a fim de satisfazer uma clausula
WHERE.
No exemplo abaixo temos um select em s_emp onde procuramos trazer
o last_name e o title, onde o title pesquisado seja o mesmo do "
Smith", para isso realizado uma subquery que nada mais que um
select, que neste caso retorna um valor somente para a comparao
na where.

SQL> select last_name, title
2 from s_emp
3 where title =
4 (select title
5 from s_emp
6 where last_name = 'Smith';

LAST_NAME TITLE
------------------------- -------------------------
Maduro Stock Clerk
Smith Stock Clerk
Nozaki Stock Clerk
Patel Stock Clerk
Newman Stock Clerk
Markarian Stock Clerk
Chang Stock Clerk
Patel Stock Clerk
Dancs Stock Clerk
Schwartz Stock Clerk

10 rows selected.


Outro exemplo de subquery, que neste caso est comparando os
valores da coluna SALARY com a mdia dos salrios da tabela
s_emp. A funo AV est trazendo a mdia dos salrios.


SQL> select last_name, title, salary
2 from s_emp
3 where salary
4 (select avg(salary
5 from s_emp;

LAST_NAME TITLE SALARY
------------------------- ------------------------- ---------
Urguhart Warehouse Manager 1200
Menchu Warehouse Manager 1250
Biri Warehouse Manager 1100
Smith Stock Clerk 940
Nozaki Stock Clerk 1200
Patel Stock Clerk 795
Newman Stock Clerk 750
Markarian Stock Clerk 850
Chang Stock Clerk 800
Patel Stock Clerk 795
Dancs Stock Clerk 860
Schwartz Stock Clerk 1100

12 rows selected.


Nos exemplos anteriores vemos que retornavam s um nico valor
para comparao na clausula where, neste caso agora h o retorno
de mais de um valor para a comparao na clausula where, mas para
que ocorra a comparao com mais de um valor temos que usar o IN
em vez do "=" no exemplo abaixo ocorre um erro:

SQL> select last_name, title
2 from s_emp
3 where dept_id =
4 (select id from s_dept
5 where name = 'finance or region_id = 2;
select last_name, title

ERROR at line 1:
ORA-01756: quoted string not properly terminated

Agora usando o IN na clausula where poder o dept_id ser
comparado com as duas condies, o select trar os registros que
na tabela s_dept que tenham o nome igual a 'Finace' ou que a
region_id seja igual a 2.

SQL> select last_name,first_name,title
2 from s_emp
3 where dept_id in
4 (select id
5 from s_dept
6 where name = 'Finance' or region_id =2;

LAST_NAME FIRST_NAME TITLE
------------------------- -------------------------
-------------------------
Quick-To-See Mark VP, Finance
Menchu Roberta Warehouse
Manager
iljum Henry Sales
Representative
Nozaki Akira Stock Clerk
Patel Vikram Stock Clerk



O uso do having em subquery:


Neste exemplo estamos querendo selecionar o dept_id e a mdia dos
salrios de s_emp, grupados pelo dept_id, com a condio de que a
mdia dos salrios de s_emp seja maior que a mdia dos salrios
do dept 32 para isso usamos o HAVIN.

Vamos ao Exemplo:

SQL> select dept_id,avg(salary
2 from s_emp
3 group by dept_id
4 having avg(salary>
5 (select avg(salary
6 from s_emp
7 where dept_id = 32;

DEPT_ID AV(SALARY
--------- -----------
33 1515
50 2025








Agora dentro do group by estamos usando o having e dentro da
subquery selecionando o menor valor da mdia da tabela s_emp
grupado por title

SQL>
1 select title,avg(salary
2 from s_emp
3 group by title
4 having avg(salary =
5 (select min(avg(salary
6 from s_emp
7 group by title


TITLE AV(SALARY
------------------------- -----------
Stock Clerk 949

SQL> select min(avg(salary
2 from s_emp
3 group by title;

MIN(AV(SALARY
----------------
949


FINAL DE CAPTULO

Finalidade do captulo tratar o RENAME, TRUNCATE.

O RENAME usado para renomear uma tabela,view etc.
observe a sintaxe abaixo:

SQL> RENAME s_ord TO S_ORDER
2 ;

Table renamed.

O CMDO TRUNCATE responsvel por deletar os registros de uma
tabela da mesma forma do DELETE com a diferena que o TRUNCATE
libera espao na tabela, para usar o CMDO TRUNCATE tem que ser
dono da tabela ou ter permisso para isto. Se houver constraints
o cmdo truncate no funciona, tem que usar o DISABLE constraints
para desabilitar as constraints.

SQL> TRUNCATE TABLE S_ITEM;

Table truncated.



FINAL DE CAPTULO
Finalidade do captulo tratar sobre o comando UPDATE.

O CMDO UPDATE serve para fazermos alteraes em registros dentro
de nossa tabela observe os exemplos abaixo:


Estamos vendo o nr do dept onde o id igual a 2:
SQL> select dept_id
2 from
3 S_EMP
4 where id = 2;

DEPT_ID
---------
41


Agora todos que tiverem nr do id igual a 2 passar a ter o id do
dept igual a 10.

SQL> UPDATE S_EMP
2 SET dept_id = 10
3 WHERE id = 2;

1 row updated.

Verificando se realmente se concretizou o UPDATE

SQL> select dept_id
2 from
3 S_EMP
4 where id = 2;

DEPT_ID
---------
10


Estamos selecionado dept_id, salary de s_emp onde o id for igual
a 1.

SQL> select dept_id,salary
2 from s_emp
3 where id = 1;

DEPT_ID SALARY
--------- ---------
50 2500

Agora vamos alterar os valores de dept_id para 32 e de salary
para 2550 onde o id for igual a 1.

SQL> UPDATE s_emp
2 SET dept_id = 32, salary = 2550
3 where id = 1;

1 row updated.


Verificando a concretizao da mudana.

SQL> select dept_id,salary
2 from s_emp
3 where id = 1;

DEPT_ID SALARY
--------- ---------
32 2550

Quando no usamos a clausula where no UPDATE fazemos alteraes
em todos os registros da tabela, no caso estamos mudando todos os
campos de commission_pct para 10 sem distino.

SQL> UPDATE S_EMP
2 SET commission_pct = 10;

26 rows updated.

Neste exemplo estamos tentando fazer uma alterao em um valor
que uma FOREIEY, e o valor que queremos adicionar no existe
na tabela de origem da F portanto ir ferir uma constraint.

SQL> UPDATE S_EMP
2 SET DEPT_ID = 60
3 WHERE DEPT_ID = 10;
UPDATE S_EMP

ERROR at line 1:
ORA-02291: integrity constraint (UIMA.S_EMP_DEPT_ID_F violated
- parent key not found

Agora no prximo exemplo estamos verificando quais so os dept_id
que fazem relao com s_emp.

SQL> select dept_id
2 from s_emp;

DEPT_ID
---------
32
41
31
10
50
41
42
43
44
45
31
32
33
34
35
41
41
42
42
43
43




26 rows selected.


Agora vamos fazer a alterao de dept_id passando todos que so
10 para 40 e no ir violar a constraint porque o valor 40 existe
na tabela DEPT. como se pode observar no select anterior.

SQL> UPDATE S_EMP
2 SET DEPT_ID = 41
3 WHERE DEPT_ID = 10;

1 row updated.
Finalidade do captulo tratar sobre VIEW.


Uma VIEW como se fosse uma janela que d acesso aos dados da
tabela, s que com restries. No exemplo abaixo estamos criando
uma VIEW usando uma SUBQUERY, trazendo dados especficos de uma
tabela.Vamos ao exemplo:

SQL> CREATE VIEW empvu45 2 AS SELECT id,last_name,title
3 FROM s_emp
4 WHERE dept_id = 45;

View created.


Estamos agora realizando um select em nossa VIEW:

SQL> select from
2 empvu45;

ID LAST_NAME TITLE
--------- ------------------------- -------------------------
10 Havel Warehouse Manager
24 Dancs Stock Clerk
25 Schwartz Stock Clerk

Estamos fazendo um select na tabela S_EMP, referente ao dept_id
45 e vemos que nossa VIEW idntica.

SQL> select id,last_name,title
2 FROM s_emp
3 WHERE dept_id = 45;

ID LAST_NAME TITLE
--------- ------------------------- -------------------------
10 Havel Warehouse Manager
24 Dancs Stock Clerk
25 Schwartz Stock Clerk






Criando uma VIEW usando ALIASES:

SQL> CREATE VIEW salvu41
2 AS SELECT id,first_name PRIMEIRO,
3 last_name ULTIMO, salary SALARIO_MENSAL
4 FROM
5 s_emp
6 WHERE dept_id = 41;

View created.

Vendo a VIEW criada:

SQL> desc salvu41
Name Null Type
------------------------------- -------- ----
ID NOT NULL NUMBER(7
PRIMEIRO VARCHAR2(25
ULTIMO NOT NULL VARCHAR2(25
SALARIO_MENSAL NUMBER(11,2


Mais um exemplo de como criar uma VIEW:

Estamos criando uma VIEW chamada "dept_sum_vu" com os nomes de
colunas criados por eu da forma que achar melhor, observe que
est sendo realizado uma SUBQUERY e um OIN dentro da SUBQUERY
entre as tabelas s_emp e s_dept, onde pega-se o menor salrio
funo MIN, o maior salrio(funo MAX a mdia dos
salrios(funo AV com a condio estabelecida da clausula
WHERE que no mais que a ligao do OIN, e por ltimo nossa
VIEW vir agrupada pelo NOME de s_dept.

SQL> EDIT
Wrote file afiedt.buf
1 create VIEW dept_sum_vu
2 (name, minsal,maxsal, avgsal
3 AS SELECT d.name, MIN (e.salary,
4 MAX(e.salary,AV(e.salary
5 FROM s_emp e,s_dept d
6 WHERE e.dept_id = d.id
7 ROUP BY d.name
SQL>

View created.

Este o formato de nossa VIEW, verifique o nome das colunas
correspondentes a SUBQUERY dentro do CREATE VIEW, e agrupados
por nome.

SQL> desc dept_sum_vu
Name Null Type
------------------------------- -------- ----
NAME NOT NULL VARCHAR2(25
MINSAL NUMBER
MAXSAL NUMBER
AVSAL NUMBER

Agora vamos fazer um select em s_dept e s_emp com um OIN e
depois vamos comparar os dados obtidos com o resultado obtido de
nossa VIEW:

Wrote file afiedt.buf
1 SELECT d.name, MIN (e.salary,
2 MAX(e.salary,AV(e.salary
3 FROM s_emp e,s_dept d
4 WHERE e.dept_id = d.id
5 ROUP BY d.name
SQL>

NAME MIN(E.SALARY MAX(E.SALARY AV(E.SALARY
------------------ ------------- ------------- -------------
Administration 1550 2500 2025
Finance 1450 1450 1450
Operations 825 1540 1144.7667
Sales 874.5 1525 1379.2143

Agora estamos fazendo um select na VIEW criada usando todas as
colunas especificadas em sua criao veja que os dados trazidos
so os mesmos da tabela s_emp e s_dept submetida em um select com
join:

SQL> EDIT
Wrote file afiedt.buf
1 select NAME,MINSAL,MAXSAL,AVSAL
2 FROM
3 DEPT_SUM_VU
SQL>

NAME MINSAL MAXSAL AVSAL
------------------------- --------- --------- ---------
Administration 1550 2500 2025
Finance 1450 1450 1450
Operations 825 1540 1144.7667
Sales 874.5 1525 1379.2143

Estamos agora criando uma VIEW com a condio WITH CHEC OPTION
CONSTRAINT que tem a finalidade de no permitir alterao na VIEW
em relao a clausula WHERE.

SQL> edit
Wrote file afiedt.buf
1 create or replace VIEW empvu41
2 AS SELECT
3 FROM s_emp
4 WHERE dept_id = 41
5 WITH CHEC OPTION CONSTRAINT empvu41_ck
SQL>

View created.

Tentamos fazer uma alterao na VIEW empvu41, no ser permitida
a alterao nos moldes sugeridos abaixo ou seja a alterao no nr
do departamento.

SQL> UPDATE empvu41
2 SET DEPT_ID = 42
3 WHERE ID = 16;
UPDATE empvu41

ERROR at line 1:
ORA-01402: view WITH CHEC OPTION where-clause violation.


Criando uma VIEW e determinando que ela seja somente de leitura.

SQL> CREATE OR REPLACE VIEW empvu45
2 (id_number, employee, job
3 AS SELECT id,last_name,title
4 FROM S_EMP
5 WHERE dept_id = 45
6 WITH READ ONLY;

View created.

Estamos tentando deletar registros da VIEW empvu45 s que ela foi
criada com a opo WITH READ ONLY, ou seja somente leitura.

SQL> DELETE FROM empvu45
2 WHERE ID_NUMBER = 10;
DELETE FROM empvu45

ERROR at line 1:
ORA-01752: cannot delete from view without exactly one key-
preserved table

Para saber as VIEWS existentes vamos a USER_VIEWS que pertence ao
dicionrio de dados e ento podemos pesquisar veja s:

SQL> describe user_views;
Name Null Type
------------------------------- -------- ----
VIEW_NAME NOT NULL VARCHAR2(30
TEXT_LENTH NUMBER
TEXT LON

-- selecionando as VIEWS existentes:

SQL> SELECT FROM
2 user_views;

VIEW_NAME TEXT_LENTH TEXT
-------------- ---------------------------------------------
EMPVU41 194 SELECT"ID","LAST_NAME","FIRST_NAME","USE
RID","START_DATE","COMMENTS","MANA

EMPVU45 74 SELECT id,last_name,title
FROM S_EMP
WHERE dept_id = 45
WITH READ ONLY


Para deletar uma VIEW usamos o cmdo DROP:
Quando deletamos uma VIEW no alteramos em nada a tabela.

SQL> DROP VIEW EMPVU45 ;

View dropped.



FINAL DE CAPTULO
Finalidade do captulo o uso da clausula WHERE.

A clausula where tem a funo de dar condies para o select onde
especifica a pesquisa, neste primeiro exemplo temos um select
somente no departamento numero 42.SQL> SELECT LAST_NAME,
DEPT_ID,SALARY
2 FROM S_EMP
3 WHERE DEPT_ID = 42;

LAST_NAME DEPT_ID SALARY
------------------------- --------- ---------
Menchu 42 1250
Nozaki 42 1200
Patel 42 795


Neste prximo caso vemos o exemplo de que para fazermos uma
pesquisa, temos que colocar o nome ou numero a ser pesquisado
como mesmo formato do que se encontra no banco, no caso abaixo
ocorreu erro por que o nome colocado diferente do que est no
banco.

SQL> SELECT FIRST_NAME, LAST_NAME, TITLE
2 FROM S_EMP
3 WHERE LAST_NAME = 'MAEE';

no rows selected

Agora com a correo do nome temos a pesquisa com sucesso.

SQL> SELECT FIRST_NAME, LAST_NAME, TITLE
2 FROM S_EMP
3 WHERE LAST_NAME = 'Magee';

FIRST_NAME LAST_NAME TITLE
----------------------------------- -------------------------
Colin Magee Sales Representative

Usando a clausula where com o comando between ... and ..., que
tem a finalidade de trazer valores delimitados dentro de um
determinado espao, no exemplo abaixo o comando traz uma seleo
que est entre 09-may-91 and 17-jun-91.



SQL> SELECT FIRST_NAME,LAST_NAME, START_DATE
2 FROM S_EMP
3 WHERE START_DATE BETWEEN '09-MAY-91'
4 AND '17-UN-91';

FIRST_NAME LAST_NAME START_DAT
------------------------- ------------------------- ---------
Midori Nagayama 17-UN-91
Alexander Markarian 26-MAY-91
Sylvie Schwartz 09-MAY-91

Agora vamos fazer um desc na tabela s_dept:

SQL> DESC S_DEPT;
Name Null Type
------------------------------- -------- ----
ID NOT NULL NUMBER(7
NAME NOT NULL VARCHAR2(25
REION_ID NUMBER(7


Agora vamos fazer uma seleo onde region_id seja (1,3 e
somente estes.

SQL> SELECT ID,NAME,REION_ID
2 FROM S_DEPT
3 WHERE REION_ID IN (1,3;

ID NAME REION_ID
--------- ------------------------- ---------
10 Finance 1
31 Sales 1
33 Sales 3
41 Operations 1
43 Operations 3
50 Administration 1

6 rows selected.




No exemplo abaixo o uso comando null na clausula where,
especifica e traz o s_customer onde sales_rep_id for nulo ou seja
onde o customer no tiver sales_rep_id. Mas neste exemplo abaixo
no cumpre a finalidade, apesar de estar correto.

SQL> select ID,NAME,CREDIT_RATIN
2 FROM S_CUSTOMER
3 WHERE SALES_REP_ID = NULL;

no rows selected

Forma errada de se pesquisar por um valor nulo:

SQL> SELECT ID,NAME,CREDIT_RATIN
2 FROM S_CUSTOMER
3 WHERE SALES_REP_ID =' ';
ERROR:
ORA-01722: invalid number

no rows selected

Veja a maneira correta de pesquisar usando a clausula where com a
condio de campos nulos.


SQL> SELECT ID,NAME,CREDIT_RATIN
2 FROM S_CUSTOMER
3 WHERE SALES_REP_ID IS NULL;

ID NAME CREDIT_RA
--------- ------------------ ---------
207 Sweet Rock Sports OOD



O exemplo abaixo demostra o uso do comando and dentro da clausula
where, onde dentro da tabela s_emp ser pesquisado os registros
que sejam do departamento 41 e com o nome do title " stock
clerk".

SQL> SELECT LAST_NAME,SALARY,DEPT_ID,TITLE
2 FROM S_EMP
3 WHERE DEPT_ID = 41
4 AND TITLE = 'Stock Clerk';
LAST_NAME SALARY DEPT_ID TITLE
----------------------- --------- --------- ----------------
Maduro 1400 41 Stock Clerk
Smith 940 41 Stock Clerk




Este exemplo mostra o uso do comando "OR" dentro da clausula
WHERE onde no caso a pesquisa feita na tabela "S_EMP" trazendo
todos os registros que contenham o dept_id igual a 41 como tambm
todos aqueles que possuam o title igual a "Stock Clerk".

Vamos
SQL> SELECT LAST_NAME,SALARY,DEPT_ID,TITLE
2 FROM S_EMP
3 where DEPT_ID = 41
4 OR TITLE = 'Stock Clerk';

LAST_NAME SALARY DEPT_ID TITLE
------------------------- --------- ---------
-------------------------
Ngao 1450 41 VP, Operations
Urguhart 1200 41 Warehouse Manager
Maduro 1400 41 Stock Clerk
Smith 940 41 Stock Clerk
Nozaki 1200 42 Stock Clerk
Patel 795 42 Stock Clerk
Newman 750 43 Stock Clerk
Markarian 850 43 Stock Clerk
Chang 800 44 Stock Clerk
Patel 795 34 Stock Clerk
Dancs 860 45 Stock Clerk
Schwartz 1100 45 Stock Clerk

12 rows selected.

Nos exemplos abaixo temos como usar o AND e o OR juntos dentro de
uma clausula where, no primeiro exemplo o select traz dentro da
tabela s_emp todos registros onde o salrio seja maior ou igual a
1000 mas somente no departamento 44 e traz todos os registros do
departamento 42, independente da condio de salrio.

Vamos ao exemplo:

SQL> select last_name,salary,dept_id
2 from s_emp
3 where salary >= 1000
4 and dept_id = 44
5 or dept_id = 42;

LAST_NAME SALARY DEPT_ID
------------------------- --------- ---------
Menchu 1250 42
Catchpole 1300 44
Nozaki 1200 42
Patel 795 42


Com o uso do parnteses ns podemos no exemplo abaixo selecionar
todos os registros do departamento 44 e 42 que recebam salrio
maior ou igual a 1000, diferente do exemplo anterior, portanto o
uso do parnteses determina que a condio da clausula WHERE do
salrio sirva par os dois.

SQL> select last_name,salary,dept_id
2 from s_emp
3 where salary >= 1000
4 and (dept_id = 44
5 or dept_id = 42;

LAST_NAME SALARY DEPT_ID
------------------------- --------- ---------
Menchu 1250 42
Catchpole 1300 44
Nozaki 1200 42

Na clausula where usamos o operador like que serve no geral para
trazer valores aproximados ou parecidos na pesquisa, podemos ver
abaixo os exemplos:


No primeiro caso abaixo o operador like esta pesquisando o
last_name da tabela s_emp que se inicia com a letra (m.

SQL> SELECT LAST_NAME
2 FROM S_EMP
3 WHERE LAST_NAME LIE 'M'
4 ;

LAST_NAME
-------------------------
Menchu
Magee
Maduro
Markarian



Agora no exemplo abaixo o comando like faz uma pesquisa no
start_date da tabela s_emp onde a data termina em 91.

SQL> SELECT LAST_NAME,START_DATE
2 FROM S_EMP
3 WHERE START_DATE LIE '91';

LAST_NAME START_DAT
------------------------- ---------
Nagayama 17-UN-91
Urguhart 18-AN-91
Havel 27-FEB-91
Sedeghi 18-FEB-91
Dumas 09-OCT-91
Nozaki 09-FEB-91
Patel 06-AU-91
Newman 21-UL-91
Markarian 26-MAY-91
Dancs 17-MAR-91
Schwartz 09-MAY-91

11 rows selected.

No exemplo abaixo feito uma seleo na tabela s_emp onde a
segunda letra do nome comea com a, no deu certo no caso abaixo
porque a letra digitada maiscula e na tabela a ser pesquisada
as segundas letras so minsculas.

SQL> SELECT LAST_NAME,START_DATE
2 FROM S_EMP
3 WHERE LAST_NAME LIE '_A';

no rows selected

Mas neste agora temos a pesquisa concluda satisfazendo a
condio da segunda letra da clausula where, observe o uso do
hfen.

SQL> SELECT LAST_NAME,START_DATE
2 FROM S_EMP
3 WHERE LAST_NAME LIE '_a';

LAST_NAME START_DAT
------------------------- ---------
Nagayama 17-UN-91
Catchpole 09-FEB-92
Havel 27-FEB-91
Magee 14-MAY-90
Maduro 07-FEB-92
Patel 06-AU-91
Markarian 26-MAY-91
Patel 17-OCT-90
Dancs 17-MAR-91

9 rows selected.




Quando optarmos por trazer somente os dados onde no contenham
uma letra qualquer, usamos no comando notlike. A seguinte
expresso : NOT LIE 'A', no exemplo abaixo no traria o
resultado desejado, porque as letras na tabela so minsculas "a"
e a utilizada foi maiscula "A".

SQL> SELECT LAST_NAME
2 FROM S_EMP
3 WHERE LAST_NAME NOT LIE 'A';

LAST_NAME
-------------------------
Velasquez
Ngao
Nagayama
Quick-To-See
Ropeburn
Urguhart
Menchu
Biri
Catchpole
Havel
25 rows selected.


Agora ns estamos usando uma letra que est no mesmo formato dos
dados na tabela e ento a execuo do select trar todos os nomes
da tabela s_emp que no tenham a letra "a".






Vamos ao exemplo:

SQL> SELECT LAST_NAME
2 FROM S_EMP
3 WHERE LAST_NAME NOT LIE 'a';

LAST_NAME
-------------------------
Quick-To-See
Ropeburn
Menchu
Biri
iljum
Sedeghi
Nguyen
Smith

8 rows selected.


No exemplo abaixo estamos selecionando somente funcionrios da
tabela s_emp, que receberam comisso, portanto na clausula where
temos o comando condicional "is not null".


SQL> SELECT LAST_NAME, TITLE, COMMISSION_PCT
2 FROM S_EMP
3 WHERE COMMISSION_PCT IS NOT NULL;

LAST_NAME TITLE COMMISSION_PCT
------------------------------------------- --------------
Magee Sales Representative 10
iljum Sales Representative 12.5
Sedeghi Sales Representative 10
Nguyen Sales Representative 15
Dumas Sales Representative 17.5










Agora queremos todos os funcionrios que no recebem comisso ou
seja que possuam o campo COMMISSION_PCT nulo.



SQL> SELECT LAST_NAME, TITLE, COMMISSION_PCT
2 FROM S_EMP
3 WHERE COMMISSION_PCT IS NULL;

LAST_NAME TITLE COMMISSION_PCT
--------------- ------------------------- --------------
Velasquez President
Ngao VP, Operations
Nagayama VP, Sales
Quick-To-See VP, Finance
Ropeburn VP, Administration
Urguhart Warehouse Manager
Menchu Warehouse Manager
Biri Warehouse Manager
Catchpole Warehouse Manager
Havel Warehouse Manager
Maduro Stock Clerk
Smith Stock Clerk
Nozaki Stock Clerk

20 rows selected.




FINAL DE CAPTULO
O Usurio inserindo valores em tempo de execuo:
O uso do & e do SET OFF, SET VRERIFY ON E ETC.



A finalidade dos exemplos abaixo demostrar como fazer quando
queremos que o usurio entre com valores, em tempo de execuo.
sempre bom lembrar que estamos no SQL Plus e os artifcios de
entrada no so to amigveis, mas servem para que em uma
programao posterior, possamos us-los para execuo.
Primeiramente o usurio entra com dados em tempo de execuo,
para em seguida ser executada uma pesquisa atravs de um cmdo
sql.
Vemos o uso do "&" para que o usurio entre com dados. No exemplo
abaixo temos um pedido de entrada de um numero por isso que o
numero_do_dept no est entre aspas.
Podemos notar que aparece o old valor e o new valor isso
devido ao cmdo set verify on, se quisermos que no aparea, deve
ser usado o set verify off.

Vamos ao Exemplo: No exemplo queremos selecionar o
id,last_name,salary da tabela s_emp onde o dept_id seja igual ao
valor digitado pelo usurio atravs &numero_do_dept, que no
exemplo ser o nr 31.
SQL> set verify onSQL> select id,last_name,salary 2 from
s_emp 3 where dept_id=&numero_do_dept;
Enter value for numero_do_dept: 31old 3: where
dept_id=&numero_do_deptnew 3: where dept_id=31 ID
LAST_NAME SALARY
--------- ------------------------- ---------
3 Nagayama 1400
11 Magee 1400

Agora no aparecer o new e old valor por causa do SET VERIFY
OFF.

SQL> set verify off
SQL> select id,last_name,salary
2 from s_emp
3 where dept_id=&numero_do_dept;
Enter value for numero_do_dept: 31 ID LAST_NAME
SALARY--------- ------------------------- --------- 3
Nagayama 1400
11 Magee 1400

Teremos um exemplo de como usurio pode entrar com dados quer
seja do tipo caracter ou numrico, note que h o uso das aspas,
temos que ter em mente que o formato a ser digitado
especificamente no exemplo abaixo tem que ser idntico ao que
est na tabela, com maisculas e minsculas pois no estamos
usando nenhum comando para fazer a converso.
Vamos ao Exemplo: estamos selecionando id,last_name,salary da
tabela s_emp onde o campo da coluna title seja exatamente igual
ao nome digitado pelo usurio pela a opo &job_title'

SQL> select id,last_name,salary
2 from s_emp
3 where title ='&job_title';

Enter value for job_title: Stock Clerk

ID LAST_NAME SALARY
--------- ------------------------- ---------
16 Maduro 1400
17 Smith 940
18 Nozaki 1200
19 Patel 795
20 Newman 750
21 Markarian 850
22 Chang 800
23 Patel 795
24 Dancs 860
25 Schwartz 1100

10 rows selected.

Agora vamos ver como que o usurio poder entrar com o nome da
coluna e com a condio de pesquisa que ele deseja que seja
estabelecida na clusula WHERE. Neste caso temos um exemplo onde
requerida a entrada de um dado numrico.

Vamos ao Exemplo: estamos selecionando o id, uma coluna sugerida
pelo usurio(logo que exista, referente a tabela s_emp e como
tambm definindo uma condio para tal pesquisa.SQL> select
id,&nome_coluna 2 from s_emp 3 where &condio;
Enter value for nome_coluna: LAST_NAME
Enter value for condio: SALARY > 100

ID LAST_NAME
--------- -------------------------
1 Velasquez
2 Ngao
3 Nagayama
4 Quick-To-See
5 Ropeburn
6 Urguhart
7 Menchu
8 Biri






Outro exemplo em que o usurio entra com o valor da coluna e da
condio WHERE.
SQL> select id,&nome_coluna 2 from s_ord 3 where &condio;
Enter value for nome_coluna: date_orderedEnter value for
condio: total>30000

ID DATE_ORDE
--------- ---------
100 31-AU-92
104 03-SEP-92
107 07-SEP-92
108 07-SEP-92
109 08-SEP-92
97 28-AU-92

6 rows selected.

Construindo um script usando as opes para que o usurio possa
entrar com dados e como tambm mostrar em tela somente o prompt.
O cmdo set echo off serve para que em tempo de execuo no se
exiba os comandos do sql. o set echo on serve para retornar a
forma anterior.
O cmdo accept serve para preparar um prompt para receber um
valor.
Neste exemplo tambm temos a criao de uma varivel v_name que
recebe valores.
Estamos preparando o ambiente para receber valores que sero
armazenados dentro de uma varivel, para aps isto, serem feitas
comparaes dentro da clusula where.
Estamos usando duas tabelas s_dept e s_region, o and uma funo
onde complementa a clusula where, e o upper no dpt.name est
passando o contedo do nome do dept
para maisculo para que seja efetuada a comparao com o nome
digitado pelo o usurio que por sua vez recebe um upper que o
transforma em maisculo, essa alternativa feita
porque no sabemos qual o formato do dado na tabela.


Vamos ao Exemplo:

SET ECHO OFF
ACCEPT V_NAME PROMPT 'D O NOME DO DEPARTAMENTO:'
SELECT DPT.NAME, RE.ID, RE.NAME " NOME DA REIO"
FROM S_DEPT DPT, S_REION RE
WHERE DPT.REION_ID = RE.ID -- est fazendo o join entre as
tabelas
AND UPPER(DPT.NAME LIE UPPER('&V_NAME'

SET ECHO ON

Como estamos gerando um SCRIPT os comandos devem ficar guardados
dentro de um arquivo que possua a extenso .SQL e preparado da
forma acima. Uma vez no SQL se desejarmos executar o nosso SCRIPT
temos que seguir o procedimento descrito abaixo, usando "@" e o
nome do arquivo, ou " START" e o nome do arquivo.






SET ECHO ON
SQL> @TEST.SQL
SQL> SET ECHO OFF
D O NOME DO DEPARTAMENTO:sales
old 4: AND UPPER(DPT.NAME LIE UPPER('&V_NAME'
new 4: AND UPPER(DPT.NAME LIE UPPER('sales'

NAME ID NOME DA REIO
---- --------- ---------------------------------------------
Sales 1 North America
Sales 2 South America
Sales 3 Africa Middle East
Sales 4 sia
Sales 5 Europe

Podemos notar que no exemplo anterior foi mostrado o OLD e o NEW
valores da varivel, para que no mostre, temos que usar o SET
VERIFY OOF, veja abaixo:

SET VERIFY OFF
SET ECHO OFF
ACCEPT V_NAME PROMPT 'D O NOME DO DEPARTAMENTO:'
SELECT DPT.NAME, RE.ID, RE.NAME " NOME DA REIO"
FROM S_DEPT DPT, S_REION RE
WHERE DPT.REION_ID = RE.ID
AND UPPER(DPT.NAME LIE UPPER('&V_NAME'

SET ECHO ON

SQL> START TEST.SQL
SQL> SET VERIFY OFF
SQL> SET ECHO OFF
D O NOME DO DEPARTAMENTO:SALES

NAME ID NOME DA REIO
-------------------------------------------------------------
Sales 1 North America
Sales 2 South America
Sales 3 Africa Middle East
Sales 4 sia
Sales 5 Europe

Input truncated to 11 characters




FINAL DE CAPTULO
Finalidade do captulo tratar sobre exemplos diversos.

Vamos descrever o uso dos cmdos abaixo:Concat, usado para
concatenar o contedo de last_name mais o contedo de title
jogando dentro de " vice presidncia" apper est transformando o
contedo de last_name em maisculo, o cmdo substr(title,3 reduz
as trs primeiras posies do contedo da coluna title que no
caso "vp", o cmdo like pesquisa algo parecido com "vp" = 'vp'.



SQL> SELECT CONCAT(UPPER(last_name,
2 substr(title,3 " vice presidncia"
3 from s_emp
4 where title LIE 'VP';

vice presidncia
------------------------------------------------
NAO, Operations
NAAYAMA, Sales
QUIC-TO-SEE, Finance
ROPEBURN, Administration


Para colocarmos um valor caracter dentro de um campo que seja
number, devemos usar a converso " TO_CHAR", funes e cmdos
usados no exemplo abaixo:
"NVL" usado para manipulao de valores nulos.
"TO_CHAR" usado no caso para a converso de "maneger_id" que
tem um formato numrico, a fim de prepar-lo para receber um
valor que no numrico.
"is null" funo que indica o valor nulo na coluna.


SQL> select last_name,
2 nvl(to_char(manager_id,'no tem gerente'
3 from s_emp
4 where manager_id is null;

LAST_NAME NVL(TO_CHAR(MANAER_ID,'NOTEMERENTE'
--------------- ----------------------------------------
Velasquez no tem gerente




Comandos ultilizados no exemplo abaixo:

"TO_CHAR" neste caso com a funo de fazer a converso da data
default do sistema para a data desejada, onde os formatos so
colocados da seguinte forma e com as seguintes funes: Day = dia
por extenso, Month = nome do ms por extenso, ddth nome do dia em
forma de numeral, YYYY = ano no padro numeral, o cmdo "NEXT DAY
' tem a funo de ir para uma prxima data que no caso faz
referencia a prxima sexta feira.( next_day,'friday'.O cmdo
"ADD_MONTHS" faz a soma de 6 meses a data_ordered
(date_ordered,"6" o seis faz referencia a seis meses.


SQL> select to_char(next_day(add_months
2 (date_ordered,6,'friday',
3 'day,month ddth,yyyy' " prxima sexta daqui a
6 meses"
4 from s_ord
5 order by date_ordered;

prxima sexta daqui a 6 meses
-------------------------------------------------------------
friday ,march 05th,1993
friday ,march 05th,1993
friday ,march 05th,1993
friday ,march 05th,1993
friday ,march 05th,1993
friday ,march 05th,1993
friday ,march 05th,1993
friday ,march 05th,1993
friday ,march 05th,1993
friday ,march 05th,1993
friday ,march 12th,1993
friday ,march 12th,1993
friday ,march 12th,1993
friday ,march 12th,1993
friday ,march 12th,1993
friday ,march 12th,1993

16 rows selected.
k
{


.
Y

F


"

CHj
0RW^E
Eio}, aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaahOhO6 OQ] ^ hOhOOQ^mH sH
hOhO5 OQ
\ ^hOOQ^hOhOOQ^hOhO>OQ^B & (
, . 0
2
D
F
-|"a-|"a-|"a-|"a-|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a |"a |"a-|"a|"a-|"a$,7$8$`,a$gdO$
,7$8$`,a$gdO
,7$8$`,gdO
,7$8$`,gdO 7$8$gdO F
Y
y



F
t

O

"
6
V
h

jl-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
|"a
,7$8$`,gdO 7$8$gdOla6FC(V,j|"a |"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a
,b7$8$^,bgdO
,7$8$`,gdO 7$8$gdO
$7$8$a$gdO$,7$8$`,a$gdO
~C,-02Fj~ -|"a-|"a-|"a-|"a-|"a |"a-|"a-|"a-|"a
|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a
,7$8$`,gdO$,7$8$`,a$gdO 7$8$gdO\^z
CWk ---|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a 
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO>|,.0=o
HVX-|"a|"a|"a|"a|"a|"a |"a|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a |"a-|"a-|"a-|"a
-|"a
$7$8$a$gdO$,7$8$`,a$gdO 7$8$gdO6Hfi,S
t 58=@x|.""$|
U&i&k&r&&&&&"'(''0'D'N'h'y''''''' (
(Z(a(|(S((u(
"'YOOOOOOOO
&hOhO5 OQ\ ^mH sH
hOhOOQ^mH sH hOhO5 OQ\ ^hOhOOQ^
rt, ^ --E."L"-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a$,7$8$`,a$gdO
7$8$gdOL"i"-"""""""a""L$;$d$ $$$$$$$$-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a-|"a
,7$8$`,gdO 7$8$gdO$Vj&&P''I(oq|
.YSo|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a 7$8$gdO$
,7$8$`,a$gdOYSur,v,y,,,,,3-7-=-C-H-N-.---
-.f.x...(g000u0(1-13151C11
2,2X2n2243 3332455556677779
:i:t:8;;c;;OOOOOOOOOOOOOOOO
OOO&hOhO5 C$OQ\ ^a$&hOhO5 C(OQ
\ ^a(hOhO5 OQ\ ^hOhOOQ^ hOhOOQ^mH sH
C.@WcqsuZ - -----O-- .&..I.V.d.f.x.-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a|"a |"a|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"c $
,7$8$`,a$gdO
$7$8$a$gdO 7$8$gdOx.z..~.C.,.,.|..
.....900M0g000000 00-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a|"a|"a |"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a|"a|"a
$7$8$a$gdO
,7$8$`,gdO$,7$8$`,a$gdO 7$8$gdO0~1C1
11111111,2222E22233032343M333 404 |"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a 7$8$gdO$
,7$8$`,a$gdO0424A4C4`4
5
55 585q5s5,5,5 55l6n6C6,666666-6u6c7-|"a-|"a-|"a-|"a|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a |"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a$,7$8$`,a$gdO
7$8$gdOc7o7q7s7u7w7y7{777E77777777
88889I9[9]9z9|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"|"|"|"a|"a|"a|"a|"a |"a|"a
|"a|"a|"a
,7$8$`,gdO 7$8$gdO
$7$8$a$gdOz99999999:
::>:@:}:a;c;u;w;-;;;;;3CScs-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a- |"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
7$8$gdOsuwyM=O=a=c=======
>>>d> >> >>>>>1-|"a-|"a-|"a |"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
|"a-|"a-|"a-|"a
,7$8$`,gdO$,7$8$`,a$gdO 7$8$gdOO =
==C==L=O=>>>>,@ @@AB
CC3ChEEEFF3H:HH-HHHI&^eLiLL M'M0M
M,MMM N NNNOO;OwO
.PlPwQ QQQQQOOOOOOO
OOO&hOhO5 C(OQ\ ^a(&hOhO5 C$OQ
\ ^a$ hOhOOQ^mH sH hOhOOQ^hOhO5 OQ
\ ^C1>WYf(@U@,@,@AAA,AiAzAAA AABCBoBBBB-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a

,7$8$`,gdO 7$8$gdOBB0C2CzC|CCCCECCCCD
DDDD1DDIDQDgDiDoD.D|DZD-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdOZDDD-DDDDDD E
EE&E(E2EHEEPEfEhEqE|EEEFF=FF-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdOFDFlF
FFFFFhu uHH>H-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"-|"a-|"a-|"a-|"a-|"a--|"a-|"a
7$8$gdO>HhIjIlI~ICIIIII "$&2B
]Z - |"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a 7$8$gdO L@LBLMMN NN
N7NXNxN N NNNNNENN-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a 
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a$,7$8$`,a$gdO
,7$8$`,gdO 7$8$gdONNNuNN:OOOQOuO OOOO(PP,P
.PBPPPcPePtPPPPCSESWS-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a
|"a-|"a-|"a
,7$8$`,gdO 7$8$gdOQRRfRpRRR-SSSS9ToTTTUUUU V
VV\V{V VVVpWWW9XcXX,YYYYZ[,[Z[[[\\0\|\ ]b]]]
^4^ ^aa aaucZcYccc.d4dWd]dd ddddeBfNfRfO
OOOOOOOOOO&hOh
O5 C$OQ\ ^a$ hOhOOQ^mH sH hOhO5 OQ
\ ^hOhOOQ^WSYSxSzS S S7T9TLTZTmToTCT,TTTT-TU"U$UUMU\
UoUqU-|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a

,7$8$`,gdO$,7$8$`,a$gdO 7$8$gdOqU,U,U-VVFVZV\V|V.
VVVVVVV
WWpW WWWWWWWW"X-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a--|"a-|"a|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO"X$X5X7X9XaXcXXXXX$Y&Y
ZZFZuZZZ[I[,[,[|[[S[[Z[-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a|"a|"a |"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a$,7$8$`,a$gdO
7$8$gdOZ[.\0\E\`\ \|\\\\\-\\\ ] ]$]@]`]b]k]Z] ]]]]
]]|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a 7$8$gdO$,7$8$`,a$gdO] ^
^
^C^^ ^^^_1_3_T_u_|___``8`:``]`n`p`r`--|"a|"a|"a|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a$,7$8$`,a$gdO
$7$8$a$gdO 7$8$gdOr``-`
````````aaaaaaaaaaab3b5b`b-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a |"a
|"a-|"a-|"a-|"a-|"a-|"a
$7$8$a$gdO$,7$8$`,a$gdO 7$8$gdO`b-bbbb
ccscuc|ccSccZccc$d d dddddd  ee,e>e-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a--|"a|"a|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a$
,7$8$`,a$gdO 7$8$gdO>eRebewee eeeePfRfff fffggMgOg.
ggghhhh-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"aa|"aa|"a-|"a
-|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a
,7$8$`,gdO$
,7$8$`,a$gdO 7$8$gdORfgEgLgOg j8j@jBjnnzoo.p qq
q3q`qkqwqzq,qq qqqq:r>rPrWrr-st
tttattDuHuMuVuaumuruuuvzzv{u{R },}}Z}Y}}}a} ~~~~ y C  
CC ,Q, ,|,OOOOOOOOOOOOOOOOO 
OOOOOO&hOhO5 C$OQ\ ^a$hOhO5 OQ
\ ^hOhOOQ^ hOhOOQ^mH sH hh
h'h8hbh,hhhi:i\i.iij j@jBjjj.kkklillmOmm-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
7$8$gdOmm7n.n|nnnnnnn o$oBoDo\oyo-ooooo ppZp.ppp
p-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a 7$8$gdOp{r}r rrrrrrrs9scsqs-s 
sss sYspuruuuuuuu|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a 7$8$gdO$,7$8$`,a$gdOuuu
v
vvDvvXv|vvvwWw|wwwwwx7xfxxxy>ymyyyz-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
7$8$gdOzDz{zzzzzzzz{ {{{{^{o{ { {{-{u{>-|"a-|"a 
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a$
,7$8$`,a$gdO
$7$8$a$gdO 7$8$gdO>Ru,} }
}I}}s}-}}1~i~q s . | -|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a    
-|"a-|"a|"a-|"a-|"a-|"a-|"a--|"a|"a|"a|"a |"a
-|"a-|"a-|"a$,7$8$`,a$gdO
$7$8$a$gdO
,7$8$`,gdO 7$8$gdO| y      CCCCCC
; M [ l ,,6,8,M,O,Q,-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a |"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdOQ,,,,
,,,,,,|'||S,,, ,,,,,,, .
.
.-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a--|"a |"a|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a$
,7$8$`,a$gdO
,7$8$`,gdO 7$8$gdO|,,,,O||,,=,,,,-.....
|||4|,|||s|~|E|||| ZZFZvZ|Z ZEZZZZ x { ~
P U dZ_,SZb-

hOOQ^hOhO5 OQ
\ ^&hOhO5 C(OQ\ ^a( hOhOOQ^mH sH
hOhOOQ^
...2|4||Y|u|x|,|||-|||||||||||
||||-|-|"a-|"a |"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a$,7$8$`,a$gdO 7$8$gdO-||1|ZrZa
68:Zkm --|"a-|"a |"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a$,7$8$`,a$gdO
7$8$gdOSSSFSHSzSSSSSS "35-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a|"a|"a-|"a-|"a-|"a-|"a
$7$8$a$gdO$,7$8$`,a$gdO 7$8$gdOFHp l -
u ZZZ-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"c -|"c -|"c -|"c -|"c -|"c -|"c |"a|"a$,7$8$`,a$gdO
7$8$gdOZxZ ZZZ 2Z\u(9;|"a
|"a|"a|"a |"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a |"a|"a|"a|"a|"a|"a|"a
7$8$gdO$,77$8$`,7a$gdO
$7$8$a$gdO$,7$8$`,a$gdO;dEZ
- -1-^-`-b----|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
|"a-|"a
,7$8$`,gdO$,7$8$`,a$gdO 7$8$gdOb-l-r---D-L-
-|H X ] 0;CV\oYYYYy
,_c,-- Zg
OT -
(OOOOOOOOOOOO
O&hOhO5 C$OQ\ ^a$ hOhOOQ^mH sH
hOhO5 OQ\ ^hOhOOQ^------- -----

HZsS E-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a|"a |"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a$,7$8$`,a$gdO
$7$8$a$gdO 7$8$gdO-
ZqZ $9Y[C|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a |"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a$,7$8$`,a$gdO
7$8$gdO
,7$8$`,gdO9; |Eb F H Y [
] -|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a
$,7$8$`,a$gdO
,7$8$`,gdO 7$8$gdOE
Y&Y.YYmYoYuYY A a c y E|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a$,7$8$`,a$gdO 7$8$gdO
$7$8$a$gdOk}&T,
:h- N 4b -|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
7$8$gdOO,Pb 
9g-M{ 3a -|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
7$8$gdOu,,O(-L-N-6 8:p-|"a-|"a
-|"a-|"a-|"a-|"-|"|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a|"a |"a|"a-|"a-|"a
$7$8$a$gdO$,7$8$`,a$gdO
,7$8$`,gdO 7$8$gdOp ;y3q
M|-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a |"a|"a|"a|"a-|"a-|"a
-|"a-|"a-|"a
$7$8$a$gdO$,7$8$`,a$gdO 7$8$gdO(f=br
Mq--|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"-|"a
$7$8$a$gdO 7$8$gdO(;AXe}6t -
2;wyUx
u ] 0^c6: O
hOhO5 OQ
\ ^ hOhOC$OQ^a$&hOhO5 C$OQ\ ^a$hOhOOQ^
hOhOOQ^mH sH D{}rtuw
"SUf|"a|"a|"a|"a|"a|"a|"a |"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a
$7$8$a$gdO 7$8$gdO$,7$8$`,a$gdOfh9;=[]mo
.0>@Bu-|"a |"a|"a-|"a-|"a-|"a-|"a
-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a |"a
$7$8$a$gdO$,7$8$`,a$gdO 7$8$gdOO
24"$&(E |"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a$,7$8$`,a$gdO$,77$8$`,7a$gdO
7$8$gdO
$7$8$a$gdO E^q &> YAE[f.
SZ@14E\apC"E
E3EREbEfEZcfnx
} -EOOOOOOOOOOO
OOOOOOOOOOOOOOOOO&hOhO5 C$OQ
\ ^a$hOhO5 OQ\ ^hOhOOQ^ hOhOOQ^mH sH
S-Ou>c~ LN-|"a-|"a
-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdONPR-E,
.CZ-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a|"a-|"a-|"a|"a|"a-|"a-|"a-|"a-|"a-|"a|"a
-|"a-|"a-|"a$,7$8$`,a$gdO
,7$8$`,gdO 7$8$gdO>@_z
-uy -|"a-|"a-|"a-|"a|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO IPRy
:M~CTEVEXEhEjE-|"a-|"a-|"a-|"a|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO
,77$8$`,7gdO 7$8$gdOjE102h 
=l-$S,
4^ |"a |"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a 7$8$gdO$,7$8$`,a$gdO nO-
O1OOOOO

"Z^OU]`-7:
AE9ps (3ACNSX
\gqy{OOOOO
OOhOhOCa hOhOOQ^mH sH
hOhO5 OQ\ ^hOhOOQ^N
n O(Po-2X~
3Y|-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a
7$8$gdO|uOO'B^| "kmo-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a |"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a |"a-|"a-|"a
$7$8$a$gdO$,7$8$`,a$gdO 7$8$gdOo |u:>@v
k {} -|"a-|"a-|"a-|"a-|"a-|"a|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a |"a
|"a-|"a-|"a-|"a-|"a$,7$8$`,a$gdO

&
F7$8$gdO 7$8$gdOu7t 9d
V -|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a|"a

|"a-|"a-|"a$,7$8$`,a$gdO
,7$8$`,gdO 7$8$gdO{|uhaa-
aYabaaaYaaaaa
aaaaaaa$169> ,O&cx3
X` OOO 
&hOhO5 C$OQ\ ^a$.hOhO5 C$OQ\ ^a$mH sH
hOhOOQ^mH sH hOhO5 OQ
\ ^hOhOOQ^Ag
7g 7h 4faaaaaaa-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"-|"-|" 7$8$gdOa
abadaHr :c 0Y,&OQc|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
7$8$gdO
,7$8$`,gdOcegy{} |.|  
5c-|"-|"-|"-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a|"a-|"a |"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdOIw
]CqYY|'-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
7$8$gdO 8@PT  ----g--uy

yku (7> w

"
-jrL T[
nxuOOOOOOOOOOOOOOOO
OOOOOO&hOhO5 C$OQ\ ^a$hOhO5 OQ
\ ^hOhOOQ^ hOhOOQ^mH sH

;jlE$RC
8fLz |"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a 7$8$gdO
,7$8$`,gdO 2`Z Hve-g------
u-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a$,7$8$`,a$gdO 7$8$gdOuy-u[u
uuuAo u'U|u=ukuuuu-u -|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
7$8$gdO

Pq y4yfyyyuy.`-|"a-|"a-|"a-|"a-|"a-|"a-|"a
|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO(ZZ MoC7kY '-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a |"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO W. =k Q  7e M {

-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a 7$8$gdO
3
a
c
u
w

"
P
~
-

6d-|"a-|"a-|"a-|"a-|"a |"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a$,7$8$`,a$gdO 7$8$gdOx0^`ZFtvSYa -|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a|"a-|"a-|"a|"a|"a|"a$
,7$8$`,a$gdO
,7$8$`,gdO 7$8$gdO Lk  &(,-as|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
,7$8$`,gdO 7$8$gdO
$7$8$a$gdOuuu2B[] ~C- -|"a-|"a|"a-|"a |"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a |"a
-|"a|"a|"a-|"a-|"a-|"a$,7$8$`,a$gdO
,7$8$`,gdO 7$8$gdOu;Aips}-DPZ u
-N-O 38
"$$
x}v''R &iC
OOOOOOOOOOOOOOOOOOOOO
O&hOhO5 C$OQ\ ^a$&hOhO5 OQ\ ^mH sH
hOhO5 OQ\ ^hOhOOQ^ hOhOOQ^mH sH CI
\^DFHLN`b} Od -|"a-|"a-|"a-|"a-|"a |"a|"a-|"a-|"a
-|"a-|"a|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a
,7$8$`,gdO
,77$8$`,7gdO 7$8$gdO -Hx W -o 7 _ | |"a|"a 
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
7$8$gdO
,7$8$`,gdO 1 "
""":"Z"y""" """Mu $=$-|"a-|"a-|"a-|"a|"a|"a
|"a|"a|"a|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO=$e$ $$$$$$YOu
1&f&p&u&,&&&&'_'a'r'-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-y|"- -|"a|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdOr't'v''''(3((k(m((((((u((
OR| ;-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO;p(~C,N,
, ,|,,,,,-3-d--|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a|"a 
|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO-l-}---E--
[.011-11111111111c3
44455555f5j5n5t5x55689 9|999::b:&;>
s@v@@F@NNN-NuNONOO O\P`PdPiR6S
SSS
hOhO5 OQ\ ^&hOhO5 C$OQ
\ ^a$hOhOOQ^ hOhOOQ^mH sH d-f-h-j-l---
X.Z.v.x...0^0D0r0 00u0011-|"a-|"a-|"a-|"a--|"a
|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO1111
2
23252I2]2q2.22 222223393M3O3a3c3444-|"a- |"a-|"a|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a- |"a-|"a-|"a
,7$8$`,gdO 7$8$gdO
4A4F4`4h4n4t4z4C4|4444444444a4v5x5S55Z5555-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a|"a-|"a|"a|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO5555556666666
717U7y7 777 8-8Q8u88888-|"a-|"a-|"a-|"a-|"a-|"a-|"a
|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO88-8999::::::`:|::::;P;,;
;;=-|"a-|"a |"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a$,7$8$`,a$gdO 7$8$gdO=D=v===
>>>p>>> :l@4@6@H@@@@@-A>A@A~A-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a|"a|"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO~AAA B-BSBCB-BB C0C
\CCCDTDDDD EEPEvExEEEF@FfF-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a 7$8$gdOfFFZF F
FFF>@^ HZHHHIRI II
B-|"a-|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdOBCu:LxLLL2M4MrMMM
,NjNNNNNNNNNbPdPvP-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a
-|"a |"a-|"a|"a$,7$8$`,a$gdO
,7$8$`,gdO 7$8$gdOvPxPPPPPPPPP;Q QQ
RiRRRR4S6SWSgS|SSSS-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a$,7$8$`,a$gdO
$7$8$a$gdO 7$8$gdOS6T8TZTkTT-TTT U'UUUqUsUUUUUU
V@V`VbVtVwVVV|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"|"|"a|"a 7$8$gdO
,7$8$`,gdOS8T UUFUsU@V`VtV VV VVW"W-
W2WFWHWWWaWWWWWWWXXXXSX^Y\\d\n\\\\\\\\'^f_n_.
_ ____-_
```4`F`O`i`q```
````aa-aOaHbd[eeeOOOOOOOOOOOOOOO
OOOOOOOOOOOOO&hOhO5 C$OQ
\ ^a$hOhO5 OQ\ ^ hOhOOQ^mH sH
hOhOOQ^VtXvXXSXXXX(YY^Y-YYYuYZ6ZPZhZ.
ZZZZZ[3[Q[n[|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a 7$8$gdO
,7$8$`,gdOn[S[[[[[\\\>\n\p\\\]O]Q]]]]]] -
]]]]]]]-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a-|"a
|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO]y]^^^'^9^;^Q^S^;_=_Ya[a
]a_aqasaaaaaaaayabFb-|"a-|"a-|"a-|"a-|"a-|"a-|"a
|"a-|"a |"a-|"a
|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdOFbHbybbbbbccccc
dCd{ddde[ee-eeeaf fffff-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a |"a-|"a-|"a-|"a-|"a-|"a$,7$8$`,a$gdO
7$8$gdOeeff,f4fbff
gg=gCgdgkgggg^hh h hhhhHiPiiiiiiai jkOkWk k  ll0lll
llllllmm>mDmHmMmgmpmumzm|mmm-mEmmmm6nppOpqqBqEq-
qluOOOOO
OO&hOhO5 C$OQ\ ^a$ hOhOOQ^mH sH
hOhOOQ^hOhO5 OQ\ ^fffggggggghh
\h^hmhohhhhhii$i.i8i:i-|"a-|"a-|"a-|"a|"a-|"a |"a|"a
|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO:i j jjjjj kkkk'k9k;k=kk
}k k kYkkkkkkk |"a|"a|"a|"a|"a|"a|"a|"a|"a 
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a
,7$8$`,gdO 7$8$gdO$,7$8$`,a$gdOk llll,l.l0l2l4l6l8l
:ll>l@lBlDlFlHllLlNlPlRlTlVlXlZl-|"a-|"a-|"a-|"a
-|"-|"-|"-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
7$8$gdOZl\l^l`lbldlflhljlllllm4n6nSncnvn nnnnnoo-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a|"a |"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a$
,7$8$`,a$gdO
,7$8$`,gdO 7$8$gdOoqoooo p
pUp{ppppppjqlqoqqqqqqq.rlrrr&s-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a |"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a$
,7$8$`,a$gdO 7$8$gdO&sdssst\tttuTuVuhujuluYvvvvvw
wWwYwjww wnxpx-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a |"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a |"a-|"a$,7$8$`,a$gdO 7$8$gdOluuulvnvyv
vv w-wwwwx(x5x9xBxxTx]xpxyz{{{{L{S{n{s{|{S{{{D
Y}a}s}z}|}Z}}}}}}V Y       
C_CfCnCCCCC P [
OOO
OO&hOhO5 C$OQ\ ^a$
hOhOOQ^mH sH hOhO5 OQ\ ^hOhOOQ^px
xxxxx y"y\yyy0zyzzuzzzyz{{ {
"B-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a |"a|"a|"a|"a
-|"a
,7$8$`,gdO$,7$8$`,a$gdO 7$8$gdOBTj,-
}}9};}=}}A}C}E}}I}}}}}
~"~=~c~-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a$,7$8$`,a$gdO 7$8$gdOc~~~~~~~   
T V g x Y           
C&C(CECLCNC]C-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"-|"a--|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a 7$8$gdO]C_C ,A,,
,,,, ||"|$|.|8|B|D|F|||-|-|"a- |"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a--|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
7$8$gdO ,7,>,H,N,,|||,,,F,,2.c.j.x.~. ....-
||E||||8|F|`|||-|fcjSBFt u .
ZZZZZZZ y . u

hOhO5 OQ\ ^&hOhO5 C$OQ


\ ^a$hOhOOQ^ hOhOOQ^mH sH -||||||,,
,9,D,W,Y,c,m,w,y,{,,,,,.....A.-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdOA.......y.|||-
|H|X|k|m| |-|||^|`|r| ||||"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a |"a
|"a|"a|"a|"a|"a$,7$8$`,a$gdO 7$8$gdO
,7$8$`,gdO||bfxZ'S-S
SSS-|"a- |"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a
,7$8$`,gdO 7$8$gdOSS3S=SSQS[SeSoSyS|S SSSSS SS
SSrt|-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a |"a-|"a-|"a
-|"a-|"a-|"a-|"a
,7$8$`,gdO
7$8$gdO & E U W Y ZNZ~ZZZ |"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a 7$8$gdO$
,7$8$`,a$gdO
$7$8$a$gdO
,7$8$`,gdO 7 N m o
= m o q s u w y
8:H_-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a|"a
,7$8$`,gdO 7$8$gdO_atO =t
-5-V-q- -----|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a
|"a|"a |"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a
$7$8$a$gdO$,7$8$`,a$gdO 7$8$gdO
ow} uDIjn||Y ---
---(-Y--
.-r
- BY.Y s |
OOOO
OOOOOO hOhOOQ^mH sH hOhO5 OQ
\ ^hOhOOQ^S---6-@-B-X-|---OC,

Hi, 5i -|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO 18:rRS -
7 M q | -|"a-|"a-|"a |"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a$,7$8$`,a$gdO
7$8$gdO Y>Y@YBY|Y.YYYYY - = -
|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a$,7$8$`,a$gdO 7$8$gdO &qs7f
y$&9Li |"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a 7$8$gdO$,7$8$`,a$gdO `
, 1357I~FVoqYW-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"--|"a |"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO7IuZH]-
(7us-E----- @@MRhrx,
djpnY$9
=OOOOOOOOOOO
O&hOhO5 C$OQ\ ^a$ hOhOOQ^mH sH
hOhOOQ^hOhO5 OQ\ ^WY[[]|-
1Aacu-|"a-|"a |"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a |"a-|"a-|"a-|"a-|"a
,7$8$`,gdO$,7$8$`,a$gdO
7$8$gdO9cy{-5-s------" Q.>@^oZ -|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a

,7$8$`,gdO 7$8$gdOHvO
-Bbduw-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a |"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a
$7$8$a$gdO$,7$8$`,a$gdO 7$8$gdO
24 Dnprt:gw -|"a-|"a-|"a-|"a
-|"a-|"a|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a |"a-|"a-|"a-|"a-|"a-|"a$,7$8$`,a$gdO
,7$8$`,gdO 7$8$gdO Z--
FC.h-|"a-|"a-|"a-|"a-|"a-|"a|"a|"a |"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO=EMOx}|R -
LmIu-
}YOhu-\EeEESEQWw y 

UOOOOOOOO
OOO&hOhO5 C$OQ\ ^a$ hOhOOQ^mH
sH hOhOOQ^hOhO5 OQ\ ^
PRdf 57eMOk-|"a-|"a-|"a
-|"a-|"a-|"a |"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a |"a$,7$8$`,a$gdO
7$8$gdOkmIwlnp
,35Y|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a$,7$8$`,a$gdO 7$8$gdO
$7$8$a$gdOY`fmwy{}CEi uAe -
-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO-5Efhy{u-
NPt (Lp-|"a-|"a- |"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a
,7$8$`,gdO 7$8$gdO-&6[
]g -|"a-|"a-|"a-|"a-|"a-|"a |"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a$,7$8$`,a$gdO
7$8$gdO Y 7@LS[bh|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
,7$8$`,gdO 7$8$gdO$,7$8$`,a$gdO
$7$8$a$gdOhj{} -\l-LSE  DFHLNPR-|"a
-|"a-|"a-|"a |"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a|"a|"a|"a|"a|"a
$7$8$a$gdO$,7$8$`,a$gdO 7$8$gdORTVX
-l (Pw4Uvx|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a 7$8$gdO$
,7$8$`,a$gdOxSZ
OOOODn
;(VX-|"a-|"a-|"a-|"a-|"a-|"a|"a|"a|"a
|"a |"a|"a|"a|"a-|"a- |"a-|"a-|"a-|"a-|"a-|"a-|"a

,S7$8$`,SgdO$,7$8$`,a$gdO
,7$8$`,gdO 7$8$gdOU
OIWS Yu
-DI
>Q3>ntaYaOaaya
RUnvPA-
hOh
OOQ^mH sH $hOhO>BOQ^phyhOhO5 OQ
\ ^hOhOOQ^X -'Ipr uX
||"a|"a|"a|"a|"a|"a|"a|"a|"a |"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a
,S7$8$`,SgdO 7$8$gdO
,7$8$`,gdO>l,;Nex -
-|"a-|"a-|"a-|"a-|"a-|"a-|"a |"a|"a |"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a|"a
|"a|"a|"a
,S7$8$`,SgdO 7$8$gdO
(>OQfaE|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a|"a|"a$,S7$8$`,Sa$gdO$,7$8$`,a$gdO
7$8$gdO
,S7$8$`,SgdOE,1CER,IUW -
|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a|"a
|"a|"a|"a |"a|"a|"a|"a|"a|"a|"a|"a|"a$
,S7$8$`,Sa$gdO
,S7$8$`,SgdO 7$8$gdO
$7$8$a$gdONPv&A^`u
I}a.-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a 7$8$gdO}
. 7;kP|PQZ
">Bdh
0{M--
hOhO5 OQ\ ^&hOhO5 C$OQ\ ^a$
hOhOOQ^mH sH hOhOOQ^5.NPy 3Qqs-
egik-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a |"a-|"a
-|"a-|"a-|"a-|"a-|"a$,7$8$`,a$gdO
,7$8$`,gdO 7$8$gdO@Pf |., 
]n -|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a 7$8$gdO'OQwy{O
.Lk---]-{------|"a-|"a-|"a-|"a
|"a|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a-|"a
$7$8$a$gdO 7$8$gdOMk -|"a-|"a-|"a-|"a-|"a
-|"a-|"a 7$8$gdO ,1 h = " $
@@y@
NormalC_H amHsHtH>A@y>
Fonte parg. padroTi@yT

Tabela normal4
l4 a
,ky, Sem lista^Z`^
OTexto sem formatao7$8$COQ^a4U`4
O Hyperlink >phyDV`D
OHyperlinkVisitado >phy Pyyyyg yy zyy zyy zyy zyy z
yy zyy zyy zyy zyy
zyy
zyy
zyy
zyy zyy zyy zyy zyy zyy zyy zyy zyy zyy z
yy zyy zyy zyy zyy zyy zyy zyy zyy zyy z
yy" zyy zyy$ zyy zyy& zyy' zyy( zyy zyy z
yy zyy, zyy- zyy. zyy zyy0 zyy1 zyy2 zyy3 z
yy4 zyy5 zyy6 zyy7 zyy8 zyy9 zyy: zyy; zyy z
yy= zyy> zyy zyy@ zyyA zyyB zyyC zyyD zyyE z
yyF zyy zyyH zyyI zyy zyy zyyL zyyM zyyN z
yyO zyyP zyyQ zyyR zyyS zyyT zyyU zyyV zyyW z
yyX zyyY zyyZ zyy[ zyy\ zyy] zyy^ zyy_ zyy` z
yya zyyb zyyc zyyd zyye zyyf zyyg zO
-A~&oy49 =yC.HMMNSUY ['`f kr[uQzz~,|E
q =&Y.a
Lf'~.4;C vN=T]Y_chdipuw z} |6ZS
e} X^ N`



;C6(H v "&.$.>&6'(,--.
0412345s6789:
;>=>-2@>A>BICDEF>HI5L4M8NO_P-Q'R
STU2VW"XuY.Zq[$\]o^2_]`abcdef &(,.02DFYy FtO
"6Vh jla 6FC( V ,

~
C
,


0
2
F
j
~

\^z CWk -->|,.0=o 


HVX
rt,^--E.Li-aL;d VjPI oq|.
Y""S"o"""".@WcqsuZ O
&&&&I&V&d&f&x&z&&~&C&,&,&|&&&&&&&9((M(g(((((( ((~
C,E024M ,0,2,A,C,`,
-
-- -8-q-s-,-,- --l.n.C.,......-.u.coqsuwy{
E
00001I1[1]1z11111111222>2@2
}2a3c3u3w3-33333434C4S4c4s4u4w4y4M5O5a5c5555555
666d6 66 6666617>7W7Y7f7777(8U8,8,8999,9i9z999 99
:C:o:::::0;2;z;|;;;;E;;;;
1IQgio.|Z- =
==&=(=2=H==P=f=h=q=|===>>=>>D>l>>>>>>hu
u@@>@hAjAlA~ACAAAAABB
B"B$B&BBCCC2CBC]CZC CCCCCCCCCC D@DBDEEF FF
F7FXFxF F FFFFFEFFFFuFF:OQu (HH,H 
.HBHPHcHeHtHHHHCEWYxz 7L9LLLZLmLoLCL,LLLL-LM"M$MM
MM\MoMqM,M,M-NNFNZN\N|N.NNNNNNN
OOpO OOOOOOOO"P$P5P7P9PaPcPPPPP$Q&Q
RRFRuRRRSIS,S,S|SSSSSZS.T0TET`T T|TTTTT-TTT U
U$U@U`UbUkUZU UUUUUU V
V
VCVV VVVW1W3WTWuW|WWWXX8X:XX]XnXpXrXX-X
XXXXXXXXYYYYYYYYYYYZ3Z5Z`Z-ZZZZ
[[s[u[|[[S[[Z[[[$\ \ \\\\\\ 
]],]>]R]b]w]] ]]]]P^R^f^ ^^^__M_O_.___`````
`'`8`b`,```a:a\a.aab b@bBbbb.cccdiddeOeee7f.f|f
ffffff g$gBgDg\gyg-ggggg hhZh.hhhh{j}j jjjjjjj 
k9kckqk-kkkk kYkpmrmmmmmmmum
n
nnDnnXn|nnn
oWo|ooooop7pfpppq>qmqqqrDr{rrrrrrrrs ssss^sos s s 
s-susttt>tRtut,ttttttttu uuIuusu-uu1vivqwsw.
w|wwwwwyw xxxxxxy
;yMy[ylyyyyyzz6z8zMzOzQzzzzzzzzzz{'{{S
}
}
}}}2~4~~Y~u~x~,~~~-~~~~~~~~~~ 
- 1 CCCZCrCZCCCaC 6 8 : Z k m -     
,,,F,H,z,,,,,,||
|"|3|5||||||,,F,H,,p,,,, ...l.. .........u..
|||x| ||| 2Z\
SSuSS(9;dEZ
1 ^ ` b ZZZZZ

H Z s S E -
Z q Z $9Y[C9; |E
b -F-H-Y-[-]----E---
&.mouAacy Ek}&T,
:h- N 4 b O ,Pb 
Y9YgY-YYY M { 3a u,,O
(LN68:p;y3q
M|(f---=--b-r------ Mq-{
}rtuw "SUfh9;=[
]mo .0>@BuO
24"$&(E S-Ou>c
~ LNPR-
E,.CZ>@_z
-uy IPRy:M~C
TVXhj102h 
=l-$S,
4^n O(Po-E2EXE~EEEE
3Y|u'B^| "kmo |
u:>@v
k {O}O OOOOuO7t 9d
V g 7g 7h 4f
bdHr :c 0Y,&OQcegy{
} |.| 5caIawaaa  
]CqYY|'

;jlE$RC
8fLz 2`Z Hveg
uy-[Ao u'U|=k-

Pq -4-f---u-.`(uZuuZu uuuMoC
7kYuuu 'W.=kyQy y  yy
7eM{ 3acuw
:j"P~- 6d x 0^`Z F t v S
Y a

L
k



&
(

-
a
s

u
u
u2B[] ~C- I\^DFHLN`b} Od -Hx W -o 
7_|1
:Zy Mu =e YOu1fpu,_artv 3 k m u
OR| ";"p"""(~C$N$ $ $|$$$$$ 
3dfhjlX&Z&v&x&&&'0'^''''(D(r( ((u((

35I]q. 9MOac,,,A,F,`,h,n,t,z,
C,|,,,,,,,,,,a,v-x-S--Z---------.......
1Uy 0-0Q0u000000-0111222222`2|22223P3,3
33444445D5v555
6>6p666 77:7l77784868H88888-9>9@9~999 :-:S:
C:-:: ;0;\;;;T ==P=v=x===>@>f>>Z> >>>>>@^
@Z@@@ARA AA
BBBB CBCCCCuC:DxDDD2E4ErEEE
,FjFFFFFFFFFbHdHvHxHHHHHHHHH;I II
i46Wg|6L8LZLkLL-LLL M'MMMqMsMMMMMM
N@N`NbNtNwNNNtPvPPSPPPP(QQ^Q-QQQuQR6RPRhR.
RRRRRS3SQSnSSSSSSSTTT>TnTpTTTUOUQU]UUUU -
UUUUUUUyUVVV'V9V;VQVSV;W=WYY[Y
]Y_YqYsYYYYYYYYyYZFZHZyZZZZZ[c[[[
\C\{\\\][]]-]]]a^ ^^^^^^^_______``
\`^`m`o`````aa$a.a8a:a b bbbbb cccc'c9c;c=cc
}c c cYccccccc  dddd,d.d0d2d4d6d8d
:dd>d@dBdDdFdHddLdNdPdRdTdVdXdZd
\d^d`dbdddfdhdjddddde4f6fSfcfvf fffffggqgggg h
hUh{hhhhhhjilioiiiiiii.jljjj&kdkkkl
\lllmTmVmhmjmlmYnnnnnooWoYojoo onpppppppp q"q
\qqq0ryrrurrryrss s
tt t"tBtTtjt,ttttt-t
uu9u;u=uuAuCuEuuIuuuuu
v"v=vcvvvvvvvwwwwTwVwgwxwww wYwwww
x&x(xExLxNx]x_xyyyyyyyyzAzzzzzz {{"{${.
{8{B{D{F{{{-{{{{{{9DWYcmwy{}}}}}A}
}}}}}}y}~~~-~H~X~k~m~ ~-~~~^ ` r bCfCxCZCCCCC'       
S - ,
,,,,3,=,,Q,[,e,o,y,|, ,,,,, ,,,,r|t||||||||||,,
.&.E..U.W.Y.. . ....|N|~|||||7|N|m|o|||
=moqsuwy
8:H_atO S=StSS SSSS
5 V q 6Z@ZBZXZ|ZZZ O C ,

H i , 5i
18:rRS---7-M-q-|--------------- >@B
|.-=
&qs7f y$&9Li `,
1 3 5 7 I ~ FVoqYYWYYY[Y[ ] | -
1Aacu9cy{-5s"Q.
>@^oZ HvO
-Bbduw 24 Dnprt
:--g-w- --- Z--
FC.hPRdf 57eMOkm
Iwlnp
,35Y`fmwy{}CEi uAe -
5Efhy{u-
NPt (Lp-&6[
]g Y 7@
LS[bhj{} - 
\l-LSE DFHLNPRTVX
-l E(EPEwEEEE4UvxSZ
Dn
;(VX OO-O'Ipr uX|
>l,;Nex
(>OQfE,
1CER,IUW -
NPv&A^`u
I}aaa.aNaPayaaa 3Qqs-
egik@Pf |., 
]n 'OQwy{O.Lk
]{Mk 0CC0CC0CC0CC0CC0CC0CC0CCp 0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CCC0CCp0CC0CC0C C0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C 0CC0C
CE0CCE0CCE0CCE0CCE0CCE0CCE0CCE0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CCp0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC C0CC C0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC C0CC C0CC
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC C0CC C0CC C0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0C
C0CC0CC0CC0CC0CC0CC0CCp0CC0CC0CC0CC0CC0CC0C C0CC0 C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CCp0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CCp0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0 C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC C0C C C0C
C C0CC C0CC C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C C 0CC
0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC
0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC0CC C0CC C0C
C C0CCp0CC 0CC 0CC 0CC 0CC 0CC0CC 0CC 0CC 0CC0CC 0CC
0CC0CC 0CC 0CC0CC0CC0CC0CC0CC0CC 0CC 0CCp0CC 0C
C 0CC 0CC 0CC 0CC0CC0CC 0CC 0CC 0CC 0CC 0CC 0CC0CC
(0CC0CC(0CC(0CC(0CC(0CC(0CC(0CC(0CC(0CC(0CC(0CC(0CC
(0CC(0CC(0CC(0CC(0CC(0CC(0CC(0CC(0CC(0CC(0CC(0CC(0CC
(0CC(0CC(0CC(0CC(0CC(0CC(0CC(0CC0CC(0CC(0CC0CC0CC
(0CC(0CC(0CC(0CC(0CC(0CC0CC0CC0CC0CC0CC(0CC(0CC
(0CC(0CC(0CC(0
(0CC(0CC(0CC(0CC(0CC(0CC(0CC(0CC(0CC
(0CC(0CC0CC C0CC(0CC(0CC(0CC(0CC(0CC(0CC(0CC0CC(0CC
(0CC0CC0CC(0CC00CC00CC00CC00CC00CC0CC0CC0CC0C
C0CC00CC00CC00CC00CC00CC00CC00CC00CC00CC00CC00CC00C
C00CC00CC00CC00CC00CC0CCC0CC00CC00CC00CC00CC00CC00C
C0CC00CC00CC00CC00CC00CC00CC0CC0CC0CC0CC0CC00C
C00CC00CC80CC80CC80CC80CC80CC80CC80CC80CC80CC80CC80C
C80CC80CC80CC80CC80CC80CC80CC80CC80CC C0CC C0CC C0C
C80CC80CC80CC80CC80CC80CC0CC80CC80CC80CC80CC80CC0C
C0CC80CC80CC80CC80CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC80CC80CC@0CC@0CC@0CC@0CC@0CC@0CC@0CC@0CC@0CC@0C
C@0CC0CC C0CCC0CC0C0CC@0CC@0CC@0CC@0CC@0CC@0CCC0CC0C
C@0CC@0CC0CC0CC@0CC@0CC@0CC0CC0CC0CC@0CC0CC@0C
C0CC0CC0CCH0CCH0CCH0CCH0CCH0CCH0CCH0CCH0CCH0CCH0C
CH0CCH0CCH0CCH0CCH0CCH0CCH0CCH0CC0CCH0CCH0CCH0CCH0C
CH0CCH0CC0CC0CC0CC0CC0CCH0CCH0CCH0CCH0CCH0CCH0C
CH0CCH0CCH0CCH0CCH0CCH0CCH0CCH0CCH0CCH0CCH0CCH0CCp0C
CH0CCH0CCH0CCP0CCP0CCP0CC0CCP0CCP0CCP0CC0CCP0CCP0C
C0CCP0CCP0CCP0CCP0CCP0CCP0CCP0CCP0CCP0CCP0CCP0CCP0C
CP0CCP0CCP0CC0CCP0CCP0CCP0CCP0CCP0CC0CCP0CCp0CCP0C
CP0CCP0CCP0CCP0CCP0CC0CCP0CCP0CCP0CC0CCP0CCP0CC0C
CP0CCP0CCP0CCP0CCP0CCP0CCP0CCP0CCP0CCP0CCP0CCP0CCP0C
CP0CCP0CCP0CCX0CCX0CCX0CCX0CCX0CCX0CCX0CCX0CC0CC0C
CX0CCX0CCX0CC0CCX0CCX0CCX0CCX0CCX0CCX0CC0CC0CCX0C
CX0CCX0CCX0CCX0CCX0CCX0CCX0CCX0CCX0CCX0CCX0CCX0CCX0C
CX0CCX0CCX0CCX0CCX0CCX0CCX0CC C0CC C0CCX0CCX0CCX0C
CX0CCX0CCX0CC`0CC0CC`0CC`0CC`0CC0CC`0CC`0CC`0CC`0C
C0CC`0CC`0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC`0CC`0C
C`0CC`0CC`0CC`0CC`0CC`0CC`0CC`0CC`0CC`0CC`0CC`0CC`0C
C`0CC0CC`0CC`0CC`0CC0CC`0CC`0CC0CC`0CC`0CC`0CC`0C
C`0CC`0CC`0CC`0CC`0CC`0CC`0CC0CC`0CC`0CC`0CC0CC`0C
C0CC`0CC0CC`0CC0CC`0CC0CC`0CC C0CC0CC C0CC C0C
C`0CC`0CC`0CC`0CC`0CC`0CC`0CC0CC`0CC`0CC`0CC`0CC`0C
C`0CC0CC0CC0CC0CC`0CC`0CC`0CC`0CC`0CC`0CCh0CCh0C
Ch0CCh0CCh0CCh0CCh0CCh0CCh0CCh0CCh0CCh0CCh0CC0CCh0C
Ch0CCh0CCh0CCh0CCh0CCh0CCh0CC0CCh0CCh0CCh0CC0CCh0C
Ch0CC0CCh0CCh0CCh0CCh0CCh0CCh0CCh0CCh0CCh0CCh0CCh0C
Ch0CCh0CCh0CCh0CCh0CCh0CCh0CCp0CCp0CCp0CC0CCp0CC0C
Cp0CCp0CCp0CCp0CCp0CCp0CCp0CC0CCp0CCp0CC0CCp0CCp0C
C0CCp0CCp0CCp0CCp0CCp0CCp0CCp0CCp0CCp0CCp0CCp0CCp0C
Cp0CCp0CCp0CCp0CC0CCp0CCp0CCp0CCp0CCp0CC0CCp0CCp0C
Cp0CCp0CCp0CCp0CCp0CCp0CC0CCp0CCp0CCp0CC0CCp0CCp0C
C0CCp0CCp0CCp0CCp0CCp0CCp0CCp0CCp0CCp0CCp0CCp0CCp0C
Cp0CCp0CCp0CCp0CCx0CCx0CCx0CC0CC0CCx0CCx0CCx0CC0C
Cx0CCx0CCx0CCx0CC0CC0CCp0CCx0CCx0CCx0CCx0CCx0CCx0C
C0CCx0CCx0CCx0CC0CCx0CCx0CCx0CCx0CCx0CCx0CCx0CCx0C
C0CCx0CCx0CCx0CCx0CCx0CCx0CCx0CCx0CCx0CCx0CCx0CCx0C
Cx0CCx0CCx0CCx0CCx0CCx0CCx0CCx0CC C0CC C0CCC0CCx0C
Cx0CCx0CCx0CCx0CCx0CCx0CC0CCx0CCx0CCx0CC0CCx0CCx0C
Cx0CC0CCx0CC0CC0CCx0CC0CCx0CC0CCx0CCx0CCx0CCx0C
Cx0CCx0CCC0CCC0CCC0CCC0CCC0CCC0CCC0CCC0CCC0CCp0CCC0C
CC0CCC0CCC0CCC0CCC0CC0CCC0CCC0CCC0CC0CCC0CCC0CC0CC
C0CCC0CCC0CCC0CCC0CCC0CCC0CCC0CCC0CCC0CCC0CCC0CCC0CC
C0CCC0CCC0CCC0CCC0CCC0CCC0CCC0CC0CCC0CC0CCC0CC C0C
CC0CCp0CCC0CCC0CCC0CCC0CCC0CCC0CC0CCC0CCC0CCC0CC0CC
C0CCC0CC0CCC0CCC0CC0CC0CCC0CC0CCC0CC0CCC0CC0CC0C
C0CCC0CCC0CCC0CCC0CCC0CC0CC0CC0CC0CC0CC0CC0C
C0CC C0CCC0CC C0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC 0CC 0CC0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0C
C 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0C
C 0CC0CC 0CC0CC 0CC C0CCC0CC 0CC 0CC 0CC 0CC 0C
C 0CC 0CC0CC 0CC0CC 0CC 0CC0CC 0CC 0CC0CC 0CC0C
C0CC 0CC0CC 0CC0CC 0CC0CC0CC 0CC 0CC 0CC 0CC 0C
C 0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CCp0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC 0CC0CC0C
C0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0C
C0CC 0CC0CC 0CC0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0C
C0CC 0CC 0CC 0CC0CC 0CC 0CC0CC 0CC 0CC 0CC 0CC 0CC
0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC 0CC0CC 0CC0CC
0CC0CC0CC0CC0CC0CC0CC C0CC C0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC C0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC C0CC C0CC
C0CC0C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CCE0CC0CC0CC0CC0CCE0CCE0CCE0CCE0CCE0CCE0C
CE0CCE0CCE0CCE0CCE0CCE0CCp0CCE0CCE0CCE0CCE0CCE0CCE0C
C0CCE0CCE0CCE0CC0CCE0CCE0CC0CCE0CCE0CCE0CCE0CCE0C
CE0CCE0CCE0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CCp0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CCp0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0CC0C
C&(,.02DFYy FtO "6Vh jla 6FC( V ,

~
C
,


0
2
F
j
~

\^z CWk -->|,.0=o 


HVX
rt,^--E.Li-aL;d VjPI oq|.
Y""S"o"""".@WcqsuZ O
&&&&I&V&d&f&x&z&&~&C&,&,&|&&&&&&&9((M(g(((((( ((~
C,E024M ,0,2,A,C,`,
-
-- -8-q-s-,-,- --l.n.C.,......-.u.coqsuwy{
E
00001I1[1]1z11111111222>2@2
}2a3c3u3w3-33333434C4S4c4s4u4w4y4M5O5a5c5555555
666d6 66 6666617>7W7Y7f7777(8U8,8,8999,9i9z999 99
:C:o:::::0;2;z;|;;;;E;;;;
1IQgio.|Z- =
==&=(=2=H==P=f=h=q=|===>>=>>D>l>>>>>>hu
u@@>@hAjAlA~ACAAAAABB
B"B$B&BBCCC2CBC]CZC CCCCCCCCCC D@DBDEEF FF
F7FXFxF F FFFFFEFFFFuFF:OQu (HH,H 
.HBHPHcHeHtHHHHCEWYxz 7L9LLLZLmLoLCL,LLLL-LM"M$MM
MM\MoMqM,M,M-NNFNZN\N|N.NNNNNNN
OOpO OOOOOOOO"P$P5P7P9PaPcPPPPP$Q&Q
RRFRuRRRSIS,S,S|SSSSSZS.T0TET`T T|TTTTT-TTT U
U$U@U`UbUkUZU UUUUUU V
V
VCVV VVVW1W3WTWuW|WWWXX8X:XX]XnXpXrXX-X
XXXXXXXXYYYYYYYYYYYZ3Z5Z`Z-ZZZZ
[[s[u[|[[S[[Z[[[$\ \ \\\\\\ 
]],]>]R]b]w]] ]]]]P^R^f^ ^^^__M_O_.___`````
`'`8`b`,```a:a\a.aab b@bBbbb.cccdiddeOeee7f.f|f
ffffff g$gBgDg\gyg-ggggg hhZh.hhhh{j}j jjjjjjj 
k9kckqk-kkkk kYkpmrmmmmmmmum
n
nnDnnXn|nnn
oWo|ooooop7pfpppq>qmqqqrDr{rrrrrrrrs ssss^sos s s 
s-susttt>tRtut,ttttttttu uuIuusu-uu1vivqwsw.
w|wwwwwyw xxxxxxy
;yMy[ylyyyyyzz6z8zMzOzQzzzzzzzzzz{'{{S
}
}
}}}2~4~~Y~u~x~,~~~-~~~~~~~~~~ 
- 1 CCCZCrCZCCCaC 6 8 : Z k m -     
,,,F,H,z,,,,,,||
|"|3|5||||||,,F,H,,p,,,, ...l.. .........u..
|x| ||| 2Z\
SSuSS(9;dEZ
1 ^ ` b ZZZZZ

H Z s S E -
Z q Z $9Y[C9; |E
b -F-H-Y-[-]----E---
&.mouAacy Ek}&T,
:h- N 4 b O ,Pb 
Y9YgY-YYY M { 3a u,,O
(LN68:p;y3q
M|(f---=--b-r------ Mq-{
}rtuw "SUfh9;=[
]mo .0>@BuO
24"$&(E S-Ou>c
~ LNPR-
E,.CZ>@_z
-uy IPRy:M~C
TVXhj102h 
=l-$S,
4^n O(Po-E2EXE~EEEE
3Y|u'B^| "kmo |
u:>@v
k {O}O OOOOuO7t 9d
V g 7g 7h 4f
bdHr :c 0Y,&OQcegy{
} |.| 5caIawaaa  
]CqYY|'

;jlE$RC
8fLz 2`Z Hveg
uy-[Ao u'U|=k-

Pq -4-f---u-.`(uZuuZu uuuMoC
7kYuuu 'W.=kyQy y  yy
7eM{ 3acuw
:j"P~- 6d x 0^`Z F t v S
Y a

L
k



&
(

-
a
s

u
u
u2B[] ~C- I\^DFHLN`b} Od -Hx W -o 
7_|1
:Zy Mu =e YOu1fpu,_artv 3 k m u
OR| ";"p"""(~C$N$ $ $|$$$$$ 
3dfhjlX&Z&v&x&&&'0'^''''(D(r( ((u((

35I]q. 9MOac,,,A,F,`,h,n,t,z,
C,|,,,,,,,,,,a,v-x-S--Z---------.......
1Uy 0-0Q0u000000-0111222222`2|22223P3,3
33444445D5v555
6>6p666 77:7l77784868H88888-9>9@9~999 :-:S:
C:-:: ;0;\;;;T ==P=v=x===>@>f>>Z> >>>>>@^
@Z@@@ARA AA
BBBB CBCCCCuC:DxDDD2E4ErEEE
,FjFFFFFFFFFbHdHvHxHHHHHHHHH;I II
i46Wg|6L8LZLkLL-LLL M'MMMqMsMMMMMM
N@N`NbNtNwNNNtPvPPSPPPP(QQ^Q-QQQuQR6RPRhR.
RRRRRS3SQSnSSSSSSSTTT>TnTpTTTUOUQU]UUUU -
UUUUUUUyUVVV'V9V;VQVSV;W=WYY[Y
]Y_YqYsYYYYYYYYyYZFZHZyZZZZZ[c[[[
\C\{\\\][]]-]]]a^ ^^^^^^^_______``
\`^`m`o`````aa$a.a8a:a b bbbbb cccc'c9c;c=cc
}c c cYccccccc  dddd,d.d0d2d4d6d8d
:dd>d@dBdDdFdHddLdNdPdRdTdVdXdZd
\d^d`dbdddfdhdjddddde4f6fSfcfvf fffffggqgggg h
hUh{hhhhhhjilioiiiiiii.jljjj&kdkkkl
\lllmTmVmhmjmlmYnnnnnooWoYojoo onpppppppp q"q
\qqq0ryrrurrryrss s
tt t"tBtTtjt,ttttt-t
uu9u;u=uuAuCuEuuIuuuuu
v"v=vcvvvvvvvwwwwTwVwgwxwww wYwwww
x&x(xExLxNx]x_xyyyyyyyyzAzzzzzz {{"{${.
{8{B{D{F{{{-{{{{{{9DWYcmwy{}}}}}A}
}}}}}}y}~~~-~H~X~k~m~ ~-~~~^ ` r bCfCxCZCCCCC'       
S - ,
,,,,3,=,,Q,[,e,o,y,|, ,,,,, ,,,,r|t||||||||||,,
.&.E..U.W.Y.. . ....|N|~|||||7|N|m|o|||
=moqsuwy
8:H_atO S=StSS SSSS
5 V q 6Z@ZBZXZ|ZZZ O C ,

H i , 5i
18:rRS---7-M-q-|--------------- >@B
|.-=
&qs7f y$&9Li `,
1 3 5 7 I ~ FVoqYYWYYY[Y[ ] | -
1Aacu9cy{-5s"Q.
>@^oZ HvO
-Bbduw 24 Dnprt
:--g-w- --- Z--
FC.hPRdf 57eMOkm
Iwlnp
,35Y`fmwy{}CEi uAe -
5Efhy{u-
NPt (Lp-&6[
]g Y 7@
LS[bhj{} - 
\l-LSE DFHLNPRTVX
-l E(EPEwEEEE4UvxSZ
Dn
;(VX OO-O'Ipr uX|
>l,;Nex
(>OQfE,
1CER,IUW -
NPv&A^`u
I}aaa.aNaPayaaa 3Qqs-
egik@Pf |., 
]n 'OQwy{O.Lk
]{Mk @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0
@0CC @0CC @0CC @0CC @0CC @0C
C @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC @0CC
@0CC @0CC @0CC @0CC@0CC@0CC@0CC
YQRf|,b-({ uSelu =U 
"2@FP[bnsz |  F
lL"$x.004c7z9s1BZDF>HNWSqU"XZ[]r``b>ehmpuz>| Q, 
.-|Z;-p f N jE|oacu
=$r';d-1458=~AfFBvPSVn[]Fbf:ikZlo&spxBc~]C-|A.
|S _- WkYhRxXE
.



$&'(,-.013456789:;=>ABCDEHILMNOQRSTUVWXYZ\
]^_`acdefghijklmopqrtuvwxy{}~C ,|,.|SZ --Y
yQZlz$.OUVXex.S~ |-BUbgt
F2 :

"5@EPQVZc2 8

d
l



t
}

u
jy.SY@Du=E ho,a_cEMvy uE"M"''''''
((($('(((-((-- EOTl&fl
,.,2,7,8,,e,k,,,,,,,1-7-C---N-O-V-c-g-h-o-s-x-y-C---
O.\.`.j...........156= E00e0q0
0 00-00000k2r22293>3c3h3i3k3l3s344 5
5=5A5O5T5U5W5X5_5667-8w88S8889y9:d:::a:
;;;0IPg =(=1==O= =>'>]>>>>>>>>>>>>>
@@@lAA A AAAA -
AAAAAAAAAAAAAAAAAAAAAyA>BBBCC$CC1C4C5C7C
;CCACDCECHCMCNCZC[C\C_C`CbCmCnCrCCCCCCC D
DEDDD F
FFFFFFF$F'F(FF0F1F6F9F:FxFF}F~F F|F,FFF FFFFF0
;=>DEMbjlstwxzC Z .HHOH9IAII
]z,=L>LDLELFLLLNLOLQLYLrLvLwL LLdM M3N4N:N;N 
N@NDNNNEN'ODOCO OOOOOOOOO-OOOOPPPP
PPPPPYPgPhPoPpPrPsPyPzPPSPP PZP P-PPPPPP
PPPPPPPPPPPP R0R4R5RERRRSsS SZST5T
;TTDTTHTTNTOT_TbTcTeTjTkTuTvTwTxT T|TTTTT-T&U'UU-UU 
UBUCUEUUUUUVU^UbUjUkU UuU VV4VOVVXY Y&Y'Yv[w[{[[,[.
[]]]]X^Y^^^_^c^d^e^g^m^{^,^.^^
^ ^ ^-^^-^^^^^^^^^^^^^^y^_ ____bbbb ffff gZgg 
gggggggggh h
h
hhhhhh h-hh5h6h:h;hChDhhhXhZh`hahehfhnhohuhvh|h.hhh hh-
kYkkkvmwm}m~m|m,mSm mZm mm-m-
mmmYmmmmmmmmmmmmmammmmmmmmmumnn
nnSrrrrrrrrrrrrurrs
s
sssss"s;sDsEsFssSsTsUs]sesgshsnsvsxsys~s ssys tttttttt"tt&t(t-
t.t5t6t7t8t:tEttHtQtRt[t\ttt}t
u
uuuuuu
,u1u2u=u>uw-wwwwwwwwwEwwwwwwwwwwwywx xxxyyy
yz$zzzz0z4z8z>zzCzDzzQzUzWzczdzz
zzzzzzzzzzzzzzzzzzOz
} }:~
;~F~~~L~X~Y~^~_~j~k~l~m~t~u~v~x~|~,~~~~~~~~~~~~~~
~~~u~~ 

|"||$|....||     
|
||||=|B|C|

",1457>OPX\ghst C 
SSSSSS
'-127;IUcd}~i j k l
Z Z
ZZZ & , - 4 6 > M Q T Y \
] _ d f m n o p r u v x } ~ C Z - Y
1 2 8 9 O P R S Y \ ] _ c f p s t v {
~  -
a I--N-O-W-X-stuvy
$-.05689@CDFLMXYZ[_elmxy,|Z-
LRS`bjmnptw C,|Sk l u Z 
- E a PQXh
S -

EO- -"--C-D---\-
]-a-d-e-g-k-l-q-t-u-w--}-,-|-|-|- ----
----Y------------------O---- (23:HLMRSalp
qvw |SZ --
xz C||Z- Y  {
,|| Y

"&',-349
;ABFIQUZ[dhCDIQRTUY]bclo
$'(,045BOa
-uy

&'04auy
-
BDbefimn}C ,S- -
- O

-
DELRSZ[^abdglx
|, .| Y
t -
E

u
$SUZ"$1:@,.
| u
&(:=>@DEMNPUVXYcdhlu
Eu$EHQRXsuv C.  -
Oy
-.78AY[\efn|
S-$
ABLTmopyzd |, -klrs
~ - -
y ",-3NPQZ[`~ 
Z- a
467@AHbdenot
u&'(
23=C^`ajkqZ Y
&,-ORSU_agstvz{C|,|Z -
-----------u--u u
uuuu'u(uuu1u7uuFuOuUuYuZu[u\ueuiusuxu u|uuZu uu-u-
uuuuuuuLOPS
]_eqruyz ,||Z - 
mnt Y 
EOuuuuuu-uuuuu
2ELPVWpqz{,.
028a">@FMViptz{ |.|( CE - P
Q
W
X
\
^
j
m
n
p
t
u
~

,
,

MNRS1289FMopvz{}--Y -
O- O- au 01{ ,
VW]^,.| -- - E
""" ":";""((((efmn
,&,,,-,1,2,6,7,=,A,E,F,_,`,g,h,m,n,s,t,y,z, ,C,.,|, ,,,,,, 
,,,,,,,,}-~-C- --Z----------- -------a---
-----. 00 000,0-020O0P0Q0V0s0t0u0z0
0000000111111y1222 22
22222127282_2b2c2e2i2j2444477778888a8888888y8 9
99
99$9,99092969799@9I9Z9_9u9}9~9 >>>>FFFFnow :
;ABVYZ\`afijlqr{}~.
MM&MMENZN_NbN-Q-QQQ
VVVV$V'VVV.VV7V8V-YYY
YYYYYY-YYYYYYYYYYEYYOYYYYYLZMZSZTZaZcZlZnZwZ{
ZZ ZZZZ ZZZZZZZZZZZZZZZ|\Z\ \\\\\  -
\\\\\\\\\\\\\\\y\]i]n]o]r]y].]|] ]]-]]]] ]
]]]-]]]f^g^m^n^v^w^C^|^,^S^^^-^^^^^^^^-^ -
^^^^^^^^^^^^^__u_` ``
`
````-`.`0`6`
;`Z`^`_```c`d`k`l``````````````a aabbbbbb
bbbbbbbbbbbbbbbbbbbbb-bybc cc c
ccccccc"cc$c'cc0c7ccCcDccc|c,cc
ccccYccccccccccccccccccccc-ccd ddddd:f
;fAfBffMfRfUfVfXf\f]fbfefffhfmfnfsftfufxfyf ffSf ffff fff
fffffffffffffffhhhhhhm0m5m6m;mOmSmVmXmYm
]m^mfmlmompmxmymooooq r
rr'r(rr0r6rrOrdrirjrxryr rrr  -
rrrrrrrrrrrryrss ssEtttNtStVtWtYt^t_tatbtitltmtotutwt
|t|t|ttttttttttttttttttttttttt-tfwgwww.
wxxxxxx$x(x,x-x3x4x9x
:xx=xDxxHxNxSxTx[x_x`xaxexfxyyyyyyyyyayyyzzzzuzu
zzyz{ { { {{{{{{{{Y{{{{{{{{{{{{{{{{{{{
&'.1248;>CFINOEu
uy }
}}}} }}}2}4}:}>}A}}}}}}}}}}
}}}E}}}}}}}}}}}}}}1~2~8~9~~~~M~Q~R~W~Z~[~
]~b~c~e~f~g~h~i~o~v~z~C~ ~S~~~~~~~~d e k l q t u w z { S Z                
- jCkCqCrCwCzC{C}CCC CCCSCC C CCCCC       CCCCCC -
CCCCCCCCCCCCCCCCCCCC &
. 1 2 Z - - x|y| |C|.|| 
||Z| |-|
|||||Y|||||||||||||||||O|||,,,,,a,,,
,,,,u,u,..... ..(...0.7.>..@.A.C...L.S.Y.||| |
|C ,.efjlsuy--u S
SS0SS>SSS ZZ]ZyZ
}Z,Z|ZZZZZZZZZZZZZZZZZ

Noau"$01567:>W]a
gkqr--l1-2-6-7--=-A-B-L-O-P-R-X-Y-[-
\-c-d-h-i-p-s-t-v-x-y- -,-.---- -- -  ------------
---------------- ---------------E-
--------u--u-
&23BIMNe,S -
O
"&'34;
FOPuy "
$&178>CDHIPQXY\]jkpswx}~u

-2 ',-34FTXZ_mru
}~ 

' ( 7 =
@ H T IOPUXY[`ahijkmqz Y
=YmYa b h i s u ~ C . - -
E (,.238;
>CDNOVWbefhklw{.-O-
45>OXirsy -uyDEL
]`acghnqrtyz|,||
E a,
0267ADELMYZ[\`dfgkl
-u otuv Y@-A-
-H-f-i-j-l-p-q-v-y-z-- -,--S---Z--
TUYZbc"=@Hqrxy--
Oa
45>HIOhltRruy
"&'.5>XY_`eflmv},|.|
478:>DHOPYZ^_dhjkop (
0589;@ANOSTY
]fgC S a.
Oa-u 67
@FLRSZ[abgjklpqy ,S34: 
;DFM[^
:oOauuy

$&'8CH]kl{--[jopvzC
u
-OuO- '(.0578:
@I@DEMNO .
34FHILMw

"$'(78=MPTcegE
&:;@AFUVW]my

$ ,Z- a
uy aa
a
aaaaaaa aa$aaaa-a.a0a1a2a3aaaaaaaaaaaa-auaa
$&'-.238LPQVhijpsxy,|.|
oqwx
O
\^efnp~|| .2NORS
\_`cghmpqsxy|,|| 0
;=> C|| "&',01389 
;HMTUZ[au
'05>EINS\]cglqz{ .S Y -







































Yx{S E}"56UXgj
;ea58EHIC|u' U ] |


;
C
i
q

9
E
F
i
r
}
|

-
Y

-
^yS .5BIV]jq~|-\^ } D 
-
>qx-,]^-.Lhi-a9:;cdZ-C 02 Z
Yuy""M"P"S"n"o"""""""-.@VWbcp(7O
&&&&&F&&U&V&c&;'='^(f(g((((_cC-,1|
, ,,,,:-;-.D.....cd0(0b0e0a1c11S1 1-
11111111112B2D2
}2~2c3t3w3333333344O5`5c555555555
6
666F66c6d6C6 6 66660737=7>7V7[7e7f7 77777u7'88T8V8 8 8
899,9h9k9y9999-9 999::B:I:n:u::::3;y;{;|;;
;;;;;E;;;;;;;
(01FIPQfino,| Z = ===
=(=1=2===O=P=e=s=u=d>g>>>>>>>>>,A|AAA -
AAAuAABBBBBBYBC1C4CACDC\C_C C CCCCC CCCCC
D(DDSDDD FFF$F'F6F9FWFZFwFxF~F;NQtwx
.HAHDHOHRHbHH-H7I9I9LLNLYL\LlLoLqLLL$M(MMM
NENFNYNNNN-NOOpOCO OOOOOOOOOP$P4PcPPPP
]Q_QRERRtRvRRRRRSSHSRSsSSS0TDTT_TbTCT UU&U
UBU_UUUUUWV_V VVVVVWW0W3WSWTWtWuW.W|WWWWW XX(X
X7XX\X]XmXrXXXXXXXyXYYYY-YZZ2Z5Z_Z`ZZ-ZZZZZuZZ [
[I[[r[u[v[ \
\\\\\\\\] ]]]],]=]>]Q]R]a]b]v]w]|]]] ]]]E]
.^7^R^e^g^Z^ ^ ^^^^_E_L_O_,_._____`'`7`8`a`d` `,` ``u``aa
9a;a[a]a,a|aaOabBbbbbb-c.c{ccccddhdidd
deeNeOeeeee6f7f,ffffff ggggAgDg[g]gxg gZggggh  h.h
hYhZh,hhhh iii jjjjjjjujj
k"k8k9kbkckpkqkkllrmSm mm-mmmmmmmumn
,nnWnYn|nnnnnn o"oVoXo.o|ooooo p p6p8pepgppppOp q
q=qqlqnqqqqqrrCrErzrSrrrrrs
sss;sDssSs]sesnsssustt"tt;tEtQt}t~tt ttttt uu
,u1u1v3vivjvwwwwwwx xxyxy:y
;yLyYykylyyyyay zz5z8zLzUzWzzzzzzz {|{I
a}h}4~F~~X~Y~t~u~w~x~|~-~~~~~~~~~~~~~~~~~u~~ 

E CYC`CqCtC C CCCCaC 5 6 8 : Y Z j m - u   
,,;,,E,H,y,,,,|||"||-|||a||||,,,,
,E,,o,p, ,,,, .."..F..k.l...-. ......f|j|x|}|O
"14Y\SSSSS'8;cPZY
E 0 1 ] a IZZ
Y \ r u Z Y - Y
\ p s a fm &8;FIX[ C 
4| ;ab| u-
-E-H-I-C---------

,>l-@C`ex jm -y- 
S[
9Ago- u'MU{|
3 ; a i ,ORad~
Y
Y8Y9YfYgYY-YYYYY L M z { 23`aZ F
Xh|-,1B U\rs:
;xy23pqyDFkl,ho.| -
O(ef --a-d-q-t- -------- (LMpq
}-
t
w y"RZ - ,
~CO abhEC
&>be}C -
'1I-Z$
@^ay02{,C`b>CDNT
\jk
=kl--$RS ,
34]^|>
mt 6@BRSqr ,E1EEWEbE}EEEEEEEE
2=Xc. &AD]`.
Y|
IQBLp{OOOOOOOOO
67stY u8Sj~ UVC
FIfiZY 67fg
&>Xh 34ef
yYqtZ9:bc
0XY ,u1 
45bc aaHaIavawaaaOaa.\
]SBCpqYXY||
:=MilE$QR C 
78efLyz 12_`
;Pi g  ":Ohy-y
,'TUik
ZuYuuu7@Hju=D^jMz{w&(

9i6:Wc q
t

,
-
u
u - M[Lcl .7V_~|7>^_|Z9Y
\x{DdlOfoptu ,S" 2 5 I L j R,.
-$$$$$BPcl,>,A,E,F,_,C,.,|,......
0000-01Z1[1224444
66=6E6o6w667777v=x=====>>> >>>@]`
@@@CCuC9D:DwDxDDDEF
,FiFjFFFFFUHWHaHHHHin6VYfi|6L8LLLL M
MM&MM-MMMtNNENSPPQ]Q^QV.V|V:W;W=WsYYYYHZxZZZZcc
]cc cc cccdXdeee3fffffqg-ggggghhiiii-j 
.jkjljjkll[l\lllljmlmppq"q[q
\qqqq0rxryrrrrsssuuuuuu
v=vvbvev{v~vvw.wwxwwx
x
xx&x_xyyyyyzAz,z|zz{{{{{{{.18cm aC S   
3,=,o,-,,,&.(.D. .Y...|||||||

Sa 6Z9ZYZ|ZZZ5CHh S--6-7-L-O-p-s-.-- =,
&pq FT_ ~ 7
EY[Y[ E 03@ac8;bex{oq
Oy
,ADadft1Cm9-:--
FZF Ceaku} 
BCd '(Lopep{
-
[^knSEX- lEEEvQSEAD 
ufOiO-O&FIoyY 1W_.| 4
:CMNVde
y ';>\^
,DFxzEIY_FnpMTc
&@FUS
$km}a aaaa-a;aHaTafaaaa 23PQps
k 5OPef~C,..
\_mp {-0IMTa >
\]z{Y.LMjk





















- r--
s XUxW
yy SimoneV:.y
,,M^,`,M|hHVV y@2yyyyy PyyyyPXc U|$4O y@C
4@,{@@yy Unknownyyyyyyyyyyyy |:yTimes New Roman5
CSymbol3&
|:yArial5 |:yCourier New" 1 gfYgf M g }M g}
42|Hya yyy yyy yyy yyy yyy yyy yyy yyAPOSTILA DE       
SQL Simone Simone
y Z.YuOh'0t a
0

HT\dla APOSTILA DE SQLPOS SimoneAimoimo
Normal.dot Simoned1moMicrosoft Word 10.0@@
-"@,-"gM y Z.,u0
hp ,
-

a DigeratiD}A




APOSTILA DE SQL
Ttulo



"$&'(,-.0123456789:;=>@ABCDEFHILMNOPQRSTUVWXYZ[\
]^_`abcdefghijklmnopqrstuvwxyz{}~ C ,|,.||S Z -- 
Y -
EOa
-uuy



"$&'(,-.0123456789:;=>@ABCDEFHILMNOPQRSTUVWXYZ[\
]^_`abcdefghijklmnopqrstuvwxyz{}~ C ,|,.||S Z -- 
Y yyy-
EOa
-uuy



"$&'(,-.0123456789:;=>@ABCDEFHILMNOPQRSTUVWXYZ[\
]^_`abcdefghijklmnopqrstuvwxyz{}~ C ,|,.||S Z -- 
Y -
EOa
-uuy



"$&'(,-.0123456789:;=>@ABCDEFHILMNOPQRSTUVWXYZ[\
]^_`abcdefghijklmnopqrstuvwxyz{}~ C ,|,.||S Z -- 
Y -
EOayyy
-yyyuy yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyRoot Entry yyyyyyyy F q-"

C1Tableyyyy yyyyiZ WordDocumentyyyyyyyy.
PSummaryInformation( yyyy DocumentSummaryInformation8yyyyyyyyyyyyu
CompObjyyyyyyyyyyyynyyyyyyyyyyyyyyyyyyyyyyyyyyyyy yyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyy FDocumento do Microsoft Word
MSWordDocWord.Document.89q

Você também pode gostar