Olá hoje vou demonstrar como utilizar o gerador de dados do PL/SQL, uma funcionalidade bastante útil quando se precisa popular uma tabela para testes.

 

Criando a tabela

— Create table
create table TB_PESSOA_FISICA
(
nr_sequencia NUMBER,
nm_pessoa VARCHAR2(200),
dt_nascimento DATE,
sexo CHAR(1),
ds_rg VARCHAR2(40),
nr_cpf NUMBER(11),
ds_passaporte VARCHAR2(100),
nr_celular NUMBER,
ds_email VARCHAR2(100),
ds_site VARCHAR2(100)
)
tablespace DEV_DATA
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 5M
next 5M
minextents 1
maxextents unlimited
pctincrease 0
);
— Add comments to the columns
comment on column TB_PESSOA_FISICA.sexo
is ”’M”,”F”’;

 

Após abrir o PL/SQL Developer abrir a funcionalidade no menu ferramentas -> Data generator

gerador

 

A geração pode ser feita de 3 formas, sendo para teste visual, popular diretamente a tabela ou gerar um arquivo .sql, conforme exemplo abaixo.

Resultado em arquivo .sql

insert into DEV.TB_PESSOA_FISICA (NR_SEQUENCIA, NM_PESSOA, SEXO, DS_RG, DS_PASSAPORTE, NR_CELULAR, DS_EMAIL, DS_SITE)
values (676682, ‘Katie Basinger’, ‘?’, ‘702874840’, ‘BR-063921453’, 887188870, ‘biazrvr@zqhwdvj.com’, ‘www.uweovptrlr.com’);

insert into DEV.TB_PESSOA_FISICA (NR_SEQUENCIA, NM_PESSOA, SEXO, DS_RG, DS_PASSAPORTE, NR_CELULAR, DS_EMAIL, DS_SITE)
values (275765, ‘Matthew Emmerich’, ‘?’, ‘437142418’, ‘BR-259837828’, 068887587, ‘yriogou@ouspdgb.com’, ‘www.lmcjkxhgrq.com’);

insert into DEV.TB_PESSOA_FISICA (NR_SEQUENCIA, NM_PESSOA, SEXO, DS_RG, DS_PASSAPORTE, NR_CELULAR, DS_EMAIL, DS_SITE)
values (444395, ‘Leelee Lewis’, ‘?’, ‘712642762’, ‘BR-297344731’, 844415207, ‘dkbggnc@rfnwnyp.com’, ‘www.blngqslczo.com’);

insert into DEV.TB_PESSOA_FISICA (NR_SEQUENCIA, NM_PESSOA, SEXO, DS_RG, DS_PASSAPORTE, NR_CELULAR, DS_EMAIL, DS_SITE)
values (337775, ‘Sonny Bright’, ‘?’, ‘046284636’, ‘BR-389647948’, 551661358, ‘wuutgkw@tnoaivb.com’, ‘www.asztavilcd.com’);

insert into DEV.TB_PESSOA_FISICA (NR_SEQUENCIA, NM_PESSOA, SEXO, DS_RG, DS_PASSAPORTE, NR_CELULAR, DS_EMAIL, DS_SITE)
values (493276, ‘Gaby Tomlin’, ‘?’, ‘386886248’, ‘BR-599360178’, 076930526, ‘mdrgkbt@izlmwsz.com’, ‘www.blesssyuot.com’);

insert into DEV.TB_PESSOA_FISICA (NR_SEQUENCIA, NM_PESSOA, SEXO, DS_RG, DS_PASSAPORTE, NR_CELULAR, DS_EMAIL, DS_SITE)
values (586205, ‘Lila Furtado’, ‘?’, ‘665230936’, ‘BR-655403956’, 247439149, ‘ixmpmuz@pkuyfsc.com’, ‘www.rjfjnkgwuz.com’);

 

SELECT
NM_PESSOA, DT_NASCIMENTO, DS_EMAIL
FROM
PESSOA_FISICA_TB P
WHERE P.SEXO = ‘M’
AND (

(case when 2 = :PARAMETRO then P.TIPO end) in (1)
or
(case when 2 = :PARAMETRO then P.TIPO end) <> (1)

)

 

 

AND ((case when ‘S’ = :P_FERR then
1 end) = 1
or
(case when ‘N’ = :P_FERR then CE.NUM_CONTRATO end) <> (123)
)

PL/SQL: exists / not-exists (Subqueries with EXISTS or NOT EXISTS)

create table FABIANO_CIDADE
(
NR_SEQUENCIA NUMBER,
NM_CIDADE    VARCHAR2(110)
)

select_fabiano_cidade

— Create table
create table FABIANO_PESSOA
(
CD_PESSOA number,
NM_PESSOA varchar2(200),
NR_CIDADE number
)
;

select_fabiano_pessoa

 

select * from
tasy.fabiano_cidade c
where exists (select 1 from
tasy.fabiano_pessoa p
where p.nr_cidade = c.nr_sequencia);

 

plsql_exists

select * from
tasy.fabiano_cidade c
where not exists (select 1 from
tasy.fabiano_pessoa p
where p.nr_cidade = c.nr_sequencia);

 

plsql_not_exists

 

http://docs.oracle.com/cd/E17952_01/refman-5.1-en/exists-and-not-exists-subqueries.html

 

Oracle/PLSQL: ASCII – CHR (Character)

 

SELECT
ASCII(‘A’)
,  ASCII(‘Z’)
,  ASCII(‘a’)
,  ASCII(‘z’)
,  ASCII(‘ ‘)
FROM dual;

oracle_sql-plus_ascII

 

oracle_pl-sql_ascII

 

SELECT
ASCII(‘F’)
,  ASCII(‘a’)
,  ASCII(‘b’)
,  ASCII(‘i’)
,  ASCII(‘a’)
,  ASCII(‘n’)
,  ASCII(‘o’)
FROM dual;

oracle_pl-sql_ascII_fabiano SELECT
CHR(’70’)
,  CHR(’97’)
,  CHR(’98’)
,  CHR(‘105′)
,  CHR(’97’)
,  CHR(‘110’)
,  CHR(‘111’)
FROM dual;

oracle_pl-sql_chr_fabiano

http://pt.wikipedia.org/wiki/ASCII

Fazendo o select para o usuário do banco: fabiano

1
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE LIKE 'FABIANO'

Será retornado os privilégios e permissões para as ações, veja a seguir.

Create Table/Criar tabela = Não

Unlimited tablespace = Não

Create Trigger = Não

Create View = Não

Create Materialized View  = Não

Create Synonym = Não

permissao_oracle_DBA_SYS_PRIVSOu Seja o usuário ainda não possui as permissões atribuídas.

Na coluna GRANTEE é o usuário com a permissão concedida, e o PRIVILEGE o privilégio que o usuário tem no acesso ao objeto identificado.

SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE LIKE ‘FABIANO’

SELECT GRANTEE, GRANTED_ROLE, ADMIN_OPTION, DEFAULT_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE LIKE ‘FABIANO’

permissao_oracle_DBA_ROLE_PRIVS

MINUS

Ele verifica a combinação dos resultados com o operador MINUS e retorna somente as linhas únicas referente e primeira consulta.
— Create table
create table FABIANO_A
(
cd_pessoa_fisica NUMBER not null,
nm_pessoa        VARCHAR2(200) not null,
dt_nascimento    DATE,
nr_cpf           NUMBER(15),
nr_rg            VARCHAR2(15),
st_sexo          VARCHAR2(1)
)
tablespace FABIANO_DATA
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);

— Create table
create table FABIANO_B
(
cd_pessoa_fisica NUMBER not null,
nm_pessoa        VARCHAR2(200) not null,
dt_nascimento    DATE,
nr_cpf