Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

segunda-feira, 24 de outubro de 2011

Curso Oracle 11g - Lesson 11 - Programação

-- Lesson 11
 --Criação de View
--exemplo 1
create or replace View func_dept80
As
Select  employee_id, first_name || ' ' || last_name nome,
phone_number, job_id
From employees
Where department_id = 80;

select * from func_dept80;
update func_dept80 set phone_number = 11111 where employee_id = 145;
select * from employees where employee_id = 145;
commit;

desc func_dept80;

--exemplo 2

Create or Replace View dept_salario
(Department_name, max_salary, min_salary, avg_salary) --definir o nome das colunas
As
Select department_name, max(salary), min(salary), round(avg(salary),2)
From employees e
  join departments d on (e.department_id = d.department_id)
group by department_name;

select * from dept_salario;

----Exemplo 3
Create or replace View salario
As
select employee_id, first_name, salary * 1 salario
from employees;

select * from salario;

update salario set salario = 20000 where employee_id = 999;
--com o campo salary * 1 não é possivel fazer o update

---Exemplo 4
--WITH CHECK OPTION CONSTRAINT
--Restringir comandos DML para outros registros que não estejam contemplados na View
create or replace view emp_dept20
As
Select *
From employees
where department_id = 20;

create or replace view region_2
As
Select * from countries
where region_id = 2
with check option constraint region_2_ck;

insert into region_2 values ('xy', 'xyz', 3); --Restrito para a região 2
insert into region_2 values ('xy', 'xyz', 2);

select * from countries;
select * from region_2;

--OBS.:
--WITH READ ONLY
--Restringir apenas para visualização

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

--SEQUENCES
--Campo auto númeração
--Este é criado como um objeto e pode ser usado em varios lugares que precisar

--Exemplo 1
Create sequence Auto_number
Increment by 2
--Start with 1 --Não permite iniciar com zero
MaxValue 10 
--MinValue 20
NoCycle --Se omitir essa informação, o padrão é Nocycle
NoCache; --Se omitir essa informação, o padrão é NoCache

Select auto_number.nextval
From dual; --traz o proximo valor
Select auto_number.currval
From dual; --traz o valor atual

Alter sequence Auto_number
Increment by 2
--Start with 1 --Não permite iniciar com zero
MaxValue 10000
--MinValue 20
NoCycle --Se omitir essa informação, o padrão é Nocycle
NoCache; --Se omitir essa informação, o padrão é NoCache

------Criação de index
--Uso para melhorar o desempenho de um select sobre uma tabela com determinadas colunas muito usadas
Create index emp_first_name_idx
        On employees(first_name);
       

-----SYNONYM
--Uso para referenciar uma tabela
--Apenas para seu usuário
Create synonym emp
for employees;

select * from emp;
--Apagar um Synonym
drop synonym emp;

--Criação de um Synonym público, para que todos os usuários possam usar
Create public synonym emp
for employees;
/*Para crar synonym público é necessario ter acesso de administrador*/




Fiquem a vontade para comentar e sugerir melhorias e/ou correção dos exemplos acima.

Curso Oracle 11g - Lesson 10 - Programação

--Lesson 10
--Comandos DDL
--Criação de tabela
--Exemplo 1

CREATE TABLE dept
(deptno      NUMBER(2),
 dname       VARCHAR2(14),
 loc         VARCHAR2(13),
 create_date DATE DEFAULT SYSDATE);

DESC DEPT;

INSERT INTO dept values (1,'RH','SJC','15-01/2011');
INSERT INTO dept values (2,'VENDAS','SP', DEFAULT); --posso passar o parametro DEFAULT, assim não preciso especificar as colunas, basta deixar em seguencia

SELECT * FROM dept;


--ROWID, localização fisica do registro
SELECT rowid, deptno FROM dept;

-------------------------------------------------------
--Exemplo 2
CREATE TABLE TABELA2
(codigo  INT,
 nome    VARCHAR(10),
 salario NUMBER(6,2));

DESC tabela2;

/*
Quanto uso o tipo INT, ele substitui pelo NUMBER(38)
Quanto uso o tipo VARCHAR, ele substitui pelo VARCHAR2
*/

Insert into tabela2 values (1, 'Laercio', 20000); --Não permite por causa da precisão (6,2) sen no maximo 6 numeros
Insert into tabela2 values (1, 'Laercio', 2000);
Insert into tabela2 values (2, 'Laercio', 9999,99);
Insert into tabela2 values (2, 'Laercio', 10000,00);
select * from tabela2;


--Exemplo 3
create table tabela3
(codigo number(1));

insert into tabela3 values (10); --não permite por causa precisão
insert into tabela3 values (9.2); --arredenda altomticamente por isso permite

select * from tabela3;

--Exemplo 4
create table tabela4
(codigo number(1,2));

desc tabela4;
insert into tabela4 values(3.45);
insert into tabela4 values(3.4);
insert into tabela4 values(3);
insert into tabela4 values(1);
insert into tabela4 values(0);
insert into tabela4 values(0.1);

Select * from tabela4; --O unico que ele aceita é zero, quando o precisão é menor do que a escala


----------------
--Trabalhar com campos tipo especifico para data e hora
create table tabela5
(data_hora timestamp,
ano_mes interval year to month);

insert into tabela5 values(sysdate, null);
insert into tabela5 values(null, );

Select * from tabela5;

--- Usando Constrant
CREATE TABLE ESTADO
(codigo number(6) constraint est_codigo_pk primary key,
  nome varchar2(30) not null,
  sigla char(2) not null,
  constraint est_sigla_uk unique (SIGLA) --como coloquei a virgula, tenho que dizer o nome da coluna esplicitamente
);
--Obs.: boa pratica sempre colocar os nomeas para as contrains

create table cidade
(codigo number(6) constraint cid_codigo_pk primary key,
nome varchar2(80) not null,
estado number(6),
constraint cid_estado_fk foreign key (estado) references estado(codigo)
);

create table bairro
(codigo number(6) primary key, --dexando a linha somente com "Primary key", o oracle nomei automaticamente a constraint
nome varchar2(60) not null,
cidade number(6),
constraint bai_cidade_fk foreign key (cidade) references cidade(codigo) on delete cascade
);
create table ruas
( codigo number(6) primary key,
nome varchar2(80),
bairro number(6) references bairro (codigo)
);

insert into estado values (1,'são paulo', 'sp');
insert into cidade values (1,'SJCampos', 1);
insert into cidade values (2,'taubaté',1);
insert into cidade values (2,'jacarei', 1);
insert into cidade values (3,'resende',2);
insert into bairro values (1, 'vl tatetuba', 1);
insert into ruas values(1, 'saigiro nakamura',1);

select * from bairro;

delete from estado where codigo =1;
delete from cidade where codigo=1;

select * from bairro;

---Criar tabela a partir de uma subquery
Create table empregados
As
Select employee_id, first_name || ' ' || last_name as nome,
salary * 12  as salary_anual, job_id, department_name
from employees e
    inner join departments d on (e.department_id = d.department_id);

desc empregados;

select * from empregados;


----Deixar uma tabela apenas leitura, para não permitir modificações

alter table empregados read only;
/*obs.: esse comando faz um commit automatico antes de bloquear a tabela para modificações*/
delete from empregados where employee_id = 9999;

alter table empregados read write; --liberar para escrita novamente


---Apagar a tabela
Drop table empregados;

select * from empregados;

Drop table estado; /*Ao tentar apagar uma tabela com Foreign Key ligada a outra tabela, não é possibel apagar a tabela, primeiro deve remover os vinculos*/




Fiquem a vontade para comentar e sugerir melhorias e/ou correção dos exemplos acima.

Curso Oracle 11g - Lesson 9 - Programação

 --lesson 9

select *
from regions;

--Insert
--Inserindo linha em uma coluna especifica
Insert into regions (region_id)
values (6);

--Inserindo linha em todas as colunas da tabela
Insert into regions
values(7, 'Teste');

--Inserindo linha com erro na chave primaria
Insert into regions (region_id, region_name)
values (1, 'ID repetido');

commit; --fecha a transação e grava as informações

Select *
From departments;

Insert into departments (department_id, department_name, manager_id, location_id)
            Values (970, 'Educacional', 100, 1700);

Insert into departments (department_id, department_name)
            Values (980, 'Secretaria');

Insert into departments
            Values (990, 'Recepção', null, null);


Select * from employees;

Insert into employees
(employee_id, first_name, last_name, email, phone_number, hire_date, job_id, salary, commission_pct, manager_id, department_id)
Values
(999, 'Anderson', 'Siqueira', 'anderson', '1234-1234', sysdate, 'TI_PROG', '18000', 0,100,970);


commit;


Insert into regions (region_id, region_name)
    Select department_id, department_name
          from departments
          where department_id > 100;

select * from regions;


ROLLBACK ; --Remove as alterações realizadas na tranzação


--Update
--Atualizar valores

Select * from regions;

update regions
set region_name = 'nova região', region_id = 30
where region_id = 6;


rollback;


select employee_id, salary, job_id
from employees
where employee_id in (108, 110);


update employees
set salary = (select salary from employees e where employee_id = employees.manager_id),
    job_id = (select job_id from employees e where employee_id = employees.manager_id)
where employee_id = 110;  


commit;


--DELETE / TRUNCATE
Select * from regions;

Delete from regions where region_id = 30;
--SAVEPOINT - Com essa opção você pode escolher um ponto para voltar com o ROLLBACK

--Exemplo -- Executanto linha a linha é possivel acompanhar as modificações
Select * from Regions;
Delete from regions Where region_id = 7; --Apaga o registro 7
Select * from Regions;

savepoint antes_update; --Criando o Ponto de restauração
Update Regions set region_name = 'ABC' where region_id = 1;
Select * from Regions;

savepoint apos_update;
insert into regions values(9,'nova região');
Select * from Regions;

Rollback to antes_update; --Retorna ao ponto de restauração criando desfazendo o update e insert
Select * from Regions;

insert into regions values(10,'sera que funciona?');
Select * from Regions;

rollback to apos_update; --Ero pois o rollback "antes_updade", apagou a criação do savepoint "Apos_update"
Select * from Regions;

update regions set region_name = region_name || '2' where region_id = 1;
Select * from Regions;

commit;
Select * from Regions;

rollback; --retorna tudo que foi feito na transação antes do "commit"


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

--Read Consistency - Leitura do dado real (consistencia da informação)
Select * From regions;
update regions set region_name = 'ABC' where region_id = 2;

commit;

/* usando sqlplus
Select * from regions for update
--fica aguardando o commit quem iniciou a transação com o update
*/

Fiquem a vontade para comentar e sugerir melhorias e/ou correção dos exemplos acima.

Curso Oracle 11g - Lesson 8 - Programação

-- Lesson 8
--Set Operator
--Union / Union ALL

--União de tabelas

Select employee_id,
       Case when (select max(end_date) from job_history where employee_id = e.employee_id) is null
            then hire_date
            else (select max(end_date + 1) from job_history where employee_id = e.employee_id)
       end As Start_Date,
       null as end_date,
       job_id, department_id
from employees e
union
select employee_id,
       Start_date,
       end_date,
       job_id, department_id
from job_history
Order by employee_id, start_date desc;


select employee_id, job_id --107 linhas
from employees;
select employee_id, job_id --10 linhas
from job_history;

select employee_id, job_id, 'atual'
from employees
union
select employee_id, job_id, 'historico'
from job_history; --115 linhas

select employee_id, job_id, 'atual'
from employees
union all
select employee_id, job_id, 'historico'
from job_history; --117 linhas


--descrever a estrutura da tabela
desc regions;
desc locations;

--mesmo com tamanhos de campos diferente, é possivel unir as tabelas
Select region_name
From regions
union
select city
from locations;


--Intersect
--traz somente o que tiver em ambas as tabelas
select employee_id, job_id, last_name ||', '|| first_name name
from employees
intersect
select j.employee_id, j.job_id, last_name ||', '|| first_name name
from job_history j join employees e
                        on j.employee_id = e.employee_id
order by employee_id, 2;


--Minus
--traz da primeira consulta, o que não tiver na segunda consulta
select employee_id, job_id, last_name ||', '|| first_name name
from employees
minus
select j.employee_id, j.job_id, last_name ||', '|| first_name name
from job_history j join employees e
                        on j.employee_id = e.employee_id
order by employee_id, 2;

--mesma coisa que o Minus usando join
select e.employee_id
from employees e left join job_history j
                   on e.employee_id = j.employee_id
where j.employee_id is null;                  

-- mesma coisa que o Minus usando subconsulta
select employee_id
from employees
where employee_id not in (select employee_id from job_history);

Fiquem a vontade para comentar e sugerir melhorias e/ou correção dos exemplos acima.

quinta-feira, 20 de outubro de 2011

Curso Oracle 11g - Lesson 7 - Programação

--Lesson 7
--Subquery
--Linha simples

SELECT employee_id,last_name, salary
FROM   employees
WHERE  salary >=
               (SELECT salary
                FROM   employees
                WHERE  UPPER(last_name) = UPPER('Abel'))
Order By last_name;        




SELECT first_name, job_id, salary
FROM   employees
WHERE  job_id = 
                (SELECT job_id
                 FROM   employees
                 WHERE  first_name = 'Christopher')
AND    salary >
                (SELECT salary
                 FROM   employees
                 WHERE  first_name = 'Christopher');

Select First_name, salary, job_id
From employees
where salary >=
                (SELECT AVG(salary)
                FROM EMPLOYEES
                WHERE Job_id =
                              (Select job_id
                                From Employees
                                Where First_name = 'Christopher'))
and Job_id = (Select job_id
              From Employees
              Where First_name = 'Christopher');


SELECT last_name, job_id, salary
FROM   employees
WHERE  salary =
                (SELECT MIN(salary)
                 FROM   employees);

select department_id, round(avg(salary))
from employees
group by department_id
having avg(salary) >= (select avg(salary) from employees where department_id = 50);


-- Multiplas linhas
--ANY , deve atender a qualquer um dos valores retornados
Select first_name, last_name, hire_date
From employees
where hire_date < ANY (Select hire_date From employees where last_name = 'King');


--ALL , deve atender a todos os valores retornados
Select first_name, last_name, hire_date
From employees
where hire_date < ALL (Select hire_date From employees where last_name = 'King');

--IN , retorna apenas os valores correspondentes
Select first_name, last_name, hire_date
From employees
where hire_date IN (Select hire_date From employees where last_name = 'King');


Fiquem a vontade para comentar e sugerir melhorias e/ou correção dos exemplos acima.

Curso Oracle 11g - Lesson 6 - Programação

--Lesson 6

--Natural Join

SELECT department_id, department_name,
       location_id, city
FROM   departments
NATURAL JOIN locations ;



--Join Using

SELECT employee_id, last_name,
       location_id, department_id
FROM   employees JOIN departments
USING (department_id) ;


-- Inner Join Or Join

SELECT e.employee_id, e.last_name, e.department_id,
       d.department_id, d.location_id
FROM   employees e JOIN departments d
ON     (e.department_id = d.department_id);


Select e.last_name || ', ' || e.first_name as emp,
    b.last_name || ', ' || b.first_name as boss,
    department_name, city
FROM employees e
join departments d
on (e.department_id = d.department_id)
join locations l
on (d.location_id = l.location_id)
join employees b
on (e.manager_id = b.employee_id);

Select e.last_name || ', ' || e.first_name as emp,
    department_name
FROM employees e
join departments d
on e.department_id = d.department_id
and e.manager_id = '149';

--Self Join

SELECT worker.last_name emp, manager.last_name mgr
FROM   employees worker JOIN employees manager
ON    (worker.manager_id = manager.employee_id);


--Nonequijoin

SELECT e.last_name, e.salary, j.grade_level
FROM   employees e
JOIN job_grades j
ON     e.salary
       BETWEEN j.lowest_sal AND j.highest_sal;



--Left Outer Join
SELECT e.last_name, nvl(e.department_id,'000'), nvl(d.department_name,'sem departamento')
FROM   employees e
LEFT OUTER JOIN departments d
ON   (e.department_id = d.department_id) ;

--Right Outer Join
SELECT nvl(e.last_name,'sem funcionario'), e.department_id, d.department_name
FROM   employees e
RIGHT OUTER JOIN departments d
ON   (e.department_id = d.department_id) ;


--Right Outer Join
SELECT nvl(e.last_name, 'sem funcionario'), nvl(e.department_id,'000'), nvl(d.department_name, 'sem departamento')
FROM   employees e
FULL OUTER JOIN departments d
ON   (e.department_id = d.department_id) ;



--Cross Join

SELECT last_name, department_name
FROM   employees
CROSS JOIN departments ;

Select country_name, first_name, employee_id
From countries , employees ;

Select country_name, first_name, employee_id
From countries cross join employees ;

Fiquem a vontade para comentar e sugerir melhorias e/ou correção dos exemplos acima.

Curso Oracle 11g - Lesson 5 - Programação

--Lesson 5

------------Expressões condicional
--CASE
--Exemplo 1
SELECT last_name, job_id, salary,
       CASE job_id WHEN 'IT_PROG'  THEN  1.10*salary
                   WHEN 'ST_CLERK' THEN  1.15*salary
                   WHEN 'SA_REP'   THEN  1.20*salary
       ELSE      salary
END as Salario_revisado
FROM   employees;

--Exemplo 2
Select last_name, salary, job_id,
  case when salary < 5000 then 'salario baixo'
       when salary < 10000 then 'salario medio'
       when salary < 15000 then 'salario alto'
       Else 'Salario ótimo'
  end As mensagem    
From employees;

--Exemplo 3
Select last_name, salary, job_id,
  case when salary < 5000 then 'salario baixo'
       when job_id = 'IT_PROG' Then 'para função é alto'
       Else 'Salario bom'
  end As mensagem    
From employees;



--DECODE - Faz o mesmo que o CASE
--Exemplo 1
SELECT last_name, job_id, salary,
       DECODE(job_id, 'IT_PROG',  1.10*salary,
                      'ST_CLERK', 1.15*salary,
                      'SA_REP',   1.20*salary,
              salary)
       REVISED_SALARY
FROM   employees;


--Exemplo 2
SELECT last_name, salary,
       DECODE (TRUNC(salary/4000, 0),
                         0, 'baixo',
                         1, 'medio',
                         2, 'acima da média',
                         3, 'salario bom',
                         4, 'salario alto',
                            'excelente') as mensagem
FROM   employees;

-------------Agrupamentos -cap 5

--Função de agrupamento: AVG, COUNT, MIN, MAX, SUM

Select department_id, count(*), max(salary), min(salary), round(avg(salary)), sum(salary)
From employees
group by department_id;


Select department_id, round(avg(salary))
From employees
Group by department_id
Having Round(Avg(salary)) > 8000
order by 1;

Fiquem a vontade para comentar e sugerir melhorias e/ou correção dos exemplos acima.

Curso Oracle 11g - Lesson 4 - Programação

--Lesson 4
--Conversão de data para texto
Select  last_name,
        TO_CHAR(hire_date, 'fmDD Month YYYY') As Hiredate, -- "fm" tira os espaços em branco
        TO_CHAR(hire_date, 'DD Month YYYY') As Hiredate_sem_fm,
        TO_CHAR(hire_date, 'fmMonth Year') As Por_extenso,
        TO_CHAR(hire_date, 'Dy Day') As dias_semana,
        TO_CHAR(hire_date, 'dy day') As dias_semana, -- é case sensitive, se deixar escrito em minusculo, o resultado também sai em minusculo
        TO_CHAR(hire_date, 'DD "de" Mon "de" YYYY') As Com_de,
       
        --Refente ao dias existe as seguintes opções:
        TO_CHAR(hire_date, 'ddspth') As Ex_ddspth, --Por extenso
        TO_CHAR(hire_date, 'ddthsp') As Ex_ddthsp, --Por extenso
        TO_CHAR(hire_date, 'DdTh') As Ex_DdTH, --Ordinal
        TO_CHAR(hire_date, 'DdSp') As Ex_DdSP --Ordinal por extenso
From Employees;



--Conversão de número para texto

Select salary,
      TO_CHAR(salary, '$99,999.00') As Simbolo_$, --onde "$99,999.00" é o formato de saida usando o simbolo de $ no inicio do valor
      TO_CHAR(salary, '99,999.99') As Sem_Simbolo, --apenas a formatação de saida sem simbolo
      TO_CHAR(salary, '99G999D99') As Separador, --usar os separadores de milhares e decimais no idioma local
      TO_CHAR(salary, '00,000.00') As Zeros, --Forçanco zeros a esquerda
      TO_CHAR(salary, 'L00,000.00') As Simbolo_Local--Saida com o simbolo local
From Employees;  
     

--Conversão de número para data

Select first_name, hire_date
From employees
Where 1=1
and hire_date >='10/06/2006'
or hire_date >= TO_DATE('2006/06/10','YYYY/MM/DD'); -- onde 'YYYY/MM/DD' é o formato da data

    
--Conversão de texto para número
Select first_name, salary
From Employees
Where salary > '5000'
or salary > 5000
or salary > 5000.50
or salary > TO_NUMBER('5,000.00','999,999.00'); --onde '999,999.00' é o formato do número


--Função dentro de outra

Select Upper(concat(first_name, concat(' ', last_name)))
            || concat(concat(' - ', email), '@empresa.com') As Exemplo
From Employees;


----------Funções gerais
--NVL e NVL2, trocar valores nulos por outro

Select salary, commission_pct,
       salary + (salary * nvl(commission_pct, 0)) as salario_comisao,
       TO_CHAR(commission_pct, '9.00'),
       NVL(TO_CHAR(commission_pct, '9.00'),'Sem comissão') NVL1,
-- sai dois resultados
       NVL2(commission_pct, 'tem comissão', 'não tem') as NVL2,
       NVL2(commission_pct, commission_pct, 0) As NVL2     
      
From employees
order by 1;


--NULLIF -- Se achar um valor, trocar por nulo
SELECT first_name, LENGTH(first_name) "expr1",
       last_name,  LENGTH(last_name)  "expr2",
       NULLIF(LENGTH(first_name), LENGTH(last_name)) result
FROM   employees;

--COALESCE -- Verifica as expressões até encontrar um valor nulo para substituir, sem limites de parametro, e ele para no primeiro parametro que encontar nulo e iguinora os demais
Select last_name, employee_id, commission_pct, manager_id,
      COALESCE(TO_CHAR(commission_pct), TO_CHAR(manager_id), 'sem comissão')
From employees;


Fiquem a vontade para comentar e sugerir melhorias e/ou correção dos exemplos acima.

quarta-feira, 19 de outubro de 2011

Curso Oracle 11g - Lesson 3 - Programação

--lesson 3

--Função para exibição dos valores em MAIUSCULO, minusculo e primeira letra em Maiuculo
select first_name,
upper(first_name) MAIUSCULO,
lower(first_name) "maiusculo",
email,
initcap(email) primeiro_maiusculo
from employees;
--where uppper(first_name) = 'DAVID';

--Concatenar valores
Select concat(concat(first_name,' '), last_name) nome
From employees;

--Função para extrair caracteres especificos de um registro
select job_id,
       SUBSTR(job_id,4,4) as funcao,
       SUBSTR(job_id,4) as funcao,
       substr(job_id, 1,2) as setor
from employees;

--Contar o número de caracteres de um registro
select phone_number,
  length(phone_number) as fone
from employees
order by fone desc;

--Mostrar em que possição encontra-se um caracter especifico
Select last_name,
      instr(last_name, 'x') as funcao
From employees
Where instr(last_name, 'x') > 0;

--Conpletar com um determinado caracter a esquerda e a direita de um valor
select salary,
lpad(salary, 10, '*') as esquerda,
rpad(salary, 10, '*') as direita
from employees;

--Trocar um valor por outro
select first_name,
      replace(first_name, 'A', 'ACHOU') as novo
From employees;     

--Deleta um caracter especifico de texto
select first_name,
  trim('A' from first_name) as funcao,
  trim('a' from lower(first_name)) as funcao2
from employees;


--Função de arredondamento
select round(62.194,2) ,
round(62.194,0) ,
round(62.194,-1) ,
round(62.194,-2) ,
round(62.194,-3)
from dual;

--Truncar um valor
select round(62.194,2) ,
trunc(62.194,0) ,
trunc(62.194,-1) ,
trunc(62.194,-2) ,
trunc(62.194,-3)
from dual;

--Retorna o resto de uma divisão
select salary,
trunc(salary/5000),
mod(salary, 5000)
from employees;

--Retorna a data atual do sistema
select sysdate from dual;

--Adicionar meses a uma data
select add_months('28/02/2011',1)
from dual;

--Sysdate - Mostra a data e hora atual do sistema
--Next_day - Mostra quando será a próxima data referente a um dia da semana,
--Last_day - mostra o último dia do mês
select sysdate,
next_day(sysdate, 'sábado') nextday,
last_day(sysdate) lastday
from dual;


--Exemplos diversos
select
sysdate,
round(sysdate, 'month') roundmes,
round(sysdate, 'year') roundano,
trunc(sysdate, 'month') truncmes,
trunc(sysdate, 'year') truncano

from dual;

Fiquem a vontade para comentar e sugerir melhorias e/ou correção dos exemplos acima.

Curso Oracle 11g - Lesson 2 - Programação

--lesson 2

/*Selecionar todos as colunas de uma tabela usando um parametro para filtrar na clusula WHERE*/
--Dado Tipo Numerico
Select *
from employees
where department_id = 90;

--Dado tipo Texto
Select *
From employees
Where last_name = 'King';

--Dado tipo Data
Select *
From employees
Where hire_date = '17/06/03';

--Com mais de um filtro
Select *
From employees
Where salary > 10000 and department_id = 90;

--Entre dois valores de uma mesma coluna
Select *
From employees
Where salary between 2500 and 3000;

--Determinar como deve iniciar e quantidade de caracteres
Select *
From employees
Where salary like '2____%';

--Usar o caracter UnderLine ( _ )
Select *
From employees
Where job_id like 'SA\_%' escape '\';

--Atualizar valores de um registro, que atenda a um parametro especifico
Update employees
set phone_number = '515_125.4567'
where employee_id = 100;

--Outro exemplo de com usar o caracter UnderLine ( _ ) , mostrando que pode-se usar qualquer caracter antes do UnderLine
Select *
From employees
Where phone_number like '515x_%' escape 'x';

--Selecionar registros onde haja um valor nulo na coluna commission_pct
Select *
From employees
Where commission_pct is null;

--Exemplos diversos
Select *
From employees
Where salary >= 10000
and (job_id like '%MAN%'
  or commission_pct is null);

--Ordernar a seleção por uma coluna especifica
Select *
From employees
order by first_name desc, 3;

--Passar valor por parametro
Select *
From employees
Where employee_id = &codigo;

--Passar coluna / nome da tabela / e ordenação por parametros
Select &coluna
From &tabela
order by &order;

--Outro exemplo
Select &&coluna
From &&tabela
order by &&order;

--Definir o valor de um parametro antes do iniciar o Select
define codigo=200
select *
from employees
where employee_id = &codigo;

Fiquem a vontade para comentar e sugerir melhorias e/ou correção dos exemplos acima.

Curso Oracle 11g - Lesson 1 - Programação

--Lesson 1
/*Selecionar todos as colunas da tabela Departmens*/
select *
from departments;

/*Selecionar especificas da tabela Departmens*/
select d.department_id, d.location_id
from departments d;

/*Efetuar calculo diretamente nos valores de uma coluna*/
select first_name, salary + 300 Salary, commission_pct
from employees;

/*Exibir o valor com sinal de negativo*/
select - salary
from employees;

/*Concatenar colunas ou texto e colunas de uma tabela*/
select first_name ||' '|| last_name As Name,
      'Sr.(a) ' || last_name || ', ' || first_name || ' - ' || job_id As Padrao_Americano
from employees;

/*Concatenar aspas simples (') com uma coluna de uma tabela*/
select first_name || q'['s [Bar]]' || q'[']' as exemplo1,
       first_name || q'<'s [Bar]'>' as exeplo2
From employees;

/*Pesquisas somente dados distintos (sem repetir os iguais)*/
Select distinct job_id
From employees;

/*Comando para mostrar a estrutura de uma tabela*/
describe employees;


Fiquem a vontade para comentar e sugerir melhorias e/ou correção dos exemplos acima.

segunda-feira, 17 de outubro de 2011

Oracle via DOS

Executar comandos usando o DOS:
comando:
    sqlplus

exemplo de select:
select * departaments;

Obs.: sempre usar o ; no final da instrução SQL


outra maneira de entrar sem precisar digitar o nome e

senha
informando usuário e senha:
    sqlplus sys/oracle as sysdba

informando apenas usuário:
    sqlplus sys as sysdba

sem informar usuário e senha:
    sqlplus / as sysdba
Obs.: dessa maneira, usa a credencial do sistema

operacional


---------
comando para PARAR a Instancia
shutdown immediate;

Iniciar a Instancia
startup open;
-----------

Status da aplicação Oracle no Windows

Para saber o status da aplicação Oracle, usar o DOS
comando
    lsnrctl status
Iniciar o Oracle
comando:
    lsnrctl start
Parar o Oracle
comando:
    lsnrctl stop

Necessario para instalação do Oracle no Windows



1-Precisa instalar o Java versão 6
2-Precisa criar outra conta com permissão de instalação
3-Atribuir um ip fixo
4-Desabilitar o UAC (Contrle de contas de usuário) para não aparecer as notificções
5-Criar duas variaveis de ambiente:

    ORACLE_SID
    orcl  /*nome da instancia

    ORACLE_HOME
    c:\app\oracle

6-Para acessar via web, precisa dar permissão ao usuário (apenas no windows)
  
    \\painel de controle\ferramentas administrativas\diretivas de segurança local\diretivas locais\atribuição de direito de usuario\fazer logon como um trabalho em lote
    Adicionar usuário "Oracle"

7-Instalar o Software Oracle

Erro HTTP 403 Forbiden

HTTP 403

Origem: Wikipédia, a enciclopédia livre.
403 Forbidden (403 Proibido) é um código de erro HTTP retornado pelo servidor web quando o utilizador ou programa tenta obter acesso um recurso que o servidor não permite.
O erro também é obtido quando tenta ver a listagem de directórios em um servidor web com Apache ou Microsoft IIS com o recurso desabilitado.

Sub estatutos de erro 403

  • 403.1 - Acesso de execução negado.
  • 403.2 - Acesso de leitura negado.
  • 403.3 - Acesso de escrita negado.
  • 403.4 - SSL requerido.
  • 403.5 - SSL 128 requerido.
  • 403.6 - Endereço IP recusado.
  • 403.7 - Certificado do cliente* requerido.
  • 403.8 - Acesso ao sitio negado.
  • 403.9 - O número de utilizadores excede o limite suportado pelo servidor.
  • 403.10 - Configuração inválida.
  • 403.11 - Mudança da palavra chave.
  • 403.12 - Acesso de mapeamento negado.
  • 403.13 - Certificado do cliente* revogado.
  • 403.14 - Listagem de directórios negada.
  • 403.15 - Acesso de licenças por parte do cliente* excedido.
  • 403.16 - Certificado do cliente* não confiável ou inválido.
  • 403.17 - Certificado do cliente* expirado ou não mais válido.
(*) Cliente: Entende-se ao utilizador ou ao programa informático que comunica-se com o servidor

Fonte: http://pt.wikipedia.org/wiki/HTTP_403

terça-feira, 11 de outubro de 2011

9 ajustes poderosos no registro do Windows 7


Mexer nas “entranhas” do sistema operacional pode ser assustador, mas como recompensa você pode conseguir alguns recursos bastante interessantes. Veja como!
O que é o registro do Windows? Pense nele como um gigantesco depósito, um banco de dados unificado, hierárquico e de fácil acesso que armazena cada uma das configurações de seu sistema (e uma tonelada de informação adicional). Sem ele, seu computador com Windows não passa de um peso de papel. Danifique-o e você terá um problemão em suas mãos. Entretanto, se você entende o que está fazendo, pode usá-lo para modificar praticamente qualquer parâmetro do Windows que desejar.
Abaixo, listamos nossos ajustes e dicas de registro favoritos. Não se esqueça: você provavelmente não verá os resultados de suas modificações até reiniciar o computador.
Faça um backup!
Antes de começar a “brincar” com o registro, faça um favor a si mesmo e crie um backup das preciosas informações contidas nele. Vamos avisar só mais uma vez: se você danificar o registro, pode não ser nem capaz de carregar o Windows para corrigir o erro.
Para fazer um backup da forma mais fácil basta criar um ponto de restauração do sistema. Abra o Painel de Controle, clique em Sistemae em Proteção do sistema na lista de opções na lateral esquerda da janela. Clique no botão Criar... e siga as instruções para criar um ponto de restauração do sistema. Simples assim.
Você também pode fazer um backup apenas do registro usando o Editor do Registro (regedit), o mesmo programa que você usará para fazer as alterações. Clique em Iniciar e digite regedit na caixa de busca. Na janela do programa clique com o botão direito do mouse em Computador e selecione a opçãoExportar. Uma cópia completa do registro será feita em um arquivo .reg.
Adicione os itens “Copiar para” e “Mover para” aos menus do Windows Explorer
Se você nunca gostou desse negócio de arrastar e soltar, pode editar o registro para adicionar as opçõesCopiar para pasta... e Mover para pasta... aos menus contextuais do Windows Explorer. Um clique em um destes itens abrirá uma lista com seus discos e pastas, e com outro clique você indica para onde os arquivos devem ir.
No Editor de Registro, vá até a chaveHKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers. Clique com o botão direito na chave ContextMenuHandlers e selecione Nova / Chave. Dê a ela o nome de CopyTo. Clique nela, dê um duplo-clique no valor (Padrão) no lado direito da janela e digite {C2FBB630-2971-11D1-A18C-00C04FD75D13} em Dados do valor.
Para criar o comando Mover para pasta... execute os mesmos passos, mas crie uma chave chamadaMoveTo e use {C2FBB631-2971-11D1-A18C-00C04FD75D13} nos Dados do valor.
Desligue o Aero Snap
Por padrão as janelas no Windows 7 são atraídas para os cantos da tela automaticamente, como um pedaço de metal puxado por um imã. A Microsoft chama este recurso de “Aero Snap” e ele pode ser muito útil na hora de trabalhar com dois documentos lado-a-lado, por exemplo. Mas e se você simplesmente quer arrastar uma janela para o canto da tela sem que o sistema operacional controle seu tamanho e posição? Nesse caso basta desativar o Aero Snap usando o registro.
Navegue até a chave HKEY_CURRENT_ USER\Control Panel\Desktop. Lá, procure por um item chamadoWindowArrangementActive, que por padrão tem o valor 1. Dê um duplo-clique no item, mude o valor para0, e o Aero Snap já era.
Mude o comportamento das miniaturas das janelas
Se você parar o cursor do mouse sobre um ícone na barra de tarefas por uma fração de segundo, verá uma “miniatura” com o conteúdo exato da janela do programa que o ícone representa. Legal, não? Mas se você é impaciente e quer uma miniatura na hora, sem espera nenhuma, está com sorte. Há uma chave do registro para isso.
No Editor de Registro navegue até a chave HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\Explorer\Advanced. Clique com o botão direito do mouse em um espaço vazio no painel direito da janela e selecione a opção Novo / Valor DWORD (32 Bits). Dê a ele o nome deExtendedUIHoverTime. Dê um duplo-clique nele, substitua 0 por 1 em Dados do valor e mude a Basepara Decimal.
Mude seu nome no Windows
Esse é divertido: quando você instala o Windows o sistema pergunta seu nome, o nome de sua organização e o nome que você quer dar para a máquina. O problema? Você pode mudar o nome da máquina o quanto quiser no Painel de Controle, mas não pode mudar o nome da pessoa para quem o sistema está registrado.
Para corrigir isso vá até a chave HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion. Você verá uma variedade de itens no lado direito da janela. Dê um duplo-clique no item RegisteredOwnere em Dados do valor coloque o nome que você quiser.
Desabilite o “reboot” automático após uma atualização
O Windows Update é uma das melhores ferramentas do sistema, já que pode baixar e instalar atualizações sozinho, sem que você tenha que se preocupar com elas. Infelizmente ele também tem o péssimo hábito de reiniciar o seu computador automaticamente quando você termina, o que pode ser um incômodo (fazendo você reabrir as abas do navegador) ou um desastre (se você não tiver salvo sua tese de mestrado).
Felizmente é possível desabilitar o “reboot” automático. Navegue até a chaveHKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows. Clique com o botão direito do mouse nela e selecione a opção Novo / Chave. Chame-a de WindowsUpdate. Agora clique com o botão direito do mouse nesta chave, selecione novamente Novo / Chave e crie uma outra chave chamada AU. A hierarquia deve ser:
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU.
Clique na chave AU e depois clique com o botão direito em um espaço vazio no painel direito da janela. Selecione a opção Novo / Valor DWORD (32 Bits). Chame-o de NoAutoRebootWithLoggedOnUsers. Dê um duplo-clique neste novo item e mude o valor de 0 para 1.
Faça seu PC mostrar a “tela azul” quando quiser
Não sei pra quê alguém usaria este recurso, mas ele existe: se você mudar alguns valores no registro, pode fazer seu PC mostrar a “tela azul da morte” sempre que segurar Ctrl e teclar Scroll Lock duas vezes (só funciona com teclados USB). Deve ser ótimo para quando você precisa de uma desculpa para enrolar no trabalho.
Navegue até a chave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parameters. Clique com o botão-direito do mouse em um espaço vazio no painel direito da janela e selecione a opçãoNovo / Valor DWORD (32 Bits). Dê a este item o nome de CrashOnCtrlScroll. Agora dê um duplo-clique nele e mude o conteúdo de Dados do valor de 0 para 1. E prepare-se para o impacto!
Esconda itens inúteis no Painel de Controle
Você acha que o Painel de Controle do Windows tem itens que você nunca irá usar? Quando foi a última vez que você precisou mexer nas configurações no Gerenciador de Credenciais? ou em Telefone e Modem? ou no Windows CardSpace? Infelizmente o Painel de Controle não é que nem uma janela do Windows Explorer, e não é possível mover ou excluir itens. A não ser que você peça uma ajudinha ao registro.
Navegue até a chaveHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer. Se não houver uma chave Explorer debaixo de Policies, crie-a. Clique em Explorer, clique com o botão direito do mouse em um espaço vazio no painel direito da janela selecione Novo / Valor DWORD (32 Bits). Chame-o deDisallowCpl, dê dois cliques sobre ele e mude o conteúdo de Dados do valor de 0 para 1
Agora clique com o botão direito do mouse sobre a chave Explorer e crie uma nova chave abaixo dela chamada DisallowCpl. Selecione-a, clique com o botão direito do mouse em um espaço vazio no painel direito da janela e crie um novo Valor da Cadeia de Caracteres. Para cada ícone do Painel de Controle que você quiser ocultar, você precisará criar uma série de valores da Cadeia de Caracteres em ordem numérica: ou seja, para esconder dois ícones você precisará criar um valor 1 e um 2. Os números devem ser sequenciais para que a dica funcione.
O valor de cada Cadeia de Caracteres deve ser idêntico ao nome do item do Painel de Controle que você quer ocultar (ex: Programas e Recursos ou Central de Ações).
Esconda a opção de busca por programas na web
Dê um duplo-clique em um arquivo que o Windows não reconhece e você verá a velha janela perguntando se você quer usar a internet para encontrar um programa que possa abrí-lo. Alguém aí usa essa função? Nós não, e ficamos felizes em saber que existe um ajuste simples no registro para eliminar para sempre esta janela. 
Encontre a chave HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer. Clique sobre ela, clique com o botão direito do mouse em um espaço vazio no painel direito da janela e selecione a opção Novo / Valor DWORD (32 Bits). Dê a ele o nome de NoInternetOpenWith, dê um duplo-clique sobre ele e mude os Dados do valor para 1.
Pregue uma peça em alguém
Você divide seu desktop ou laptop com outras pessoas? Quer deixar uma mensagem engraçadinha para elas que será exibida sempre que eles se logarem no PC? Existe um ajuste no registro que faz com que uma mensagem apareça no início de cada sessão, e força os usuários a clicar nela antes de prosseguir com o logon.
Navegue até a chave HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current Version\Policies\System. Dê um duplo-clique no item legalnoticecaption. Qualquer coisa que você digitar em Dados do valor será o cabeçalho de sua mensagem. Dê um OK e um duplo-clique em legalnoticetext. Aqui, coloque em Dados do valor o texto da mensagem. Seja criativo!

segunda-feira, 10 de outubro de 2011

Como fazer backup dos posts e comentários no novo Blogger?

Como fazer backup dos posts e comentários no novo Blogger?
Já para fazer backup completo de todo o conteúdo do seu blog, incluindo posts e comentários, ou mesmo para restaurar algum conteúdo, migrar e eliminar, o menu foi para o final.
O novo menu é o “Detalhes” e clique em seguida no “Outro”, como mostrado na imagem que segue:

Note que bem no topo estão os links para exportação e importação do conteúdo do seu blog. Mas tome cuidado com o link de excluir, pois isso é irreversível.
Para fazer o backup dos posts e comentários, basta clicar no link “Exportar blog” para fazer o download do arquivo completo em XML. Isso não apagará nada em seu conteúdo, apenas vai criar um arquivo de backup para sua segurança ou para transportar o conteúdo para outro lugar ou outro blog.


Fonte: http://www.ferramentasblog.com/2011/07/como-editar-templates-e-fazer-backups-no-novo-blogger-google-blogs.html

quarta-feira, 5 de outubro de 2011

SQL Server 2008 - Modulo 05 - Part 2 de 3 - Curso 6231


Fazendo o deploy de pacotes

Importando um pacote para o Integration Services
PASSO 1 – Conectar ao Integration Services.

PASSO 2 - Criar uma pasta chamada "Meus Pacotes" em File System para armazenar os pacotes.
PASSO 3 - Clicar com o botão direito em Meus Pacotes → Import Package...
Caminho para importação do pacote: F:\PACOTES\ImportaVariasFontes\bin

PASSO 4 – Executar o pacote.



Fazendo o Deploy de um pacote SSIS no File System

PASSO 1 - Conectar ao Integration Services

PASSO 2 - Expandir "Stored Packages →  File System".

PASSO 3 - Copiar o pacote "ImportaVariasFontes.dtsx" para o caminho abaixo:
C:\Program Files\Microsoft SQL Server\100\DTS\Packages

PASSO 4 - Atualizar o pasta File System do Integration Services

PASSO 5 - Executar o pacote pelo Integration Services
PASSO 6 - Deletar o pacote "ImportaVariasFontes.dtsx" localizado em:
                   C:\Program Files\Microsoft SQL Server\100\DTS\Packages

PASSO 7 - Atualizar o pasta File System do Integration Services



Fazendo o Deploy de um pacote SSIS no MSDB

PASSO 1 - Executar a seguinte query
SELECT * FROM msdb.dbo.sysssispackages
WHERE createdate > '2010-03-01'
Resultado esperado: nenhum registro

PASSO 2 - Gerar um arquivo de Manifesto
                   Clicar no menu Project → importVariasFontes Properties →
                   Deployment Utility → CreateDeploymentUtility = True

PASSO 3 - Ir até a pasta \bin\Deployment do projeto e executar o arquivo
                    "importVariasFontes.SSISDeploymentManifest"

PASSO 4 - Verificando a existencia do pacote no MSDB
SELECT * FROM msdb.dbo.sysssispackages
WHERE createdate > '2010-03-01'
Resultado esperado: 1 registro

Related Posts Plugin for WordPress, Blogger...