

spernega
Members-
Content count
56 -
Joined
-
Last visited
Community Reputation
4 ComumAbout spernega

Informações Pessoais
-
Sexo
Masculino
-
Localização
São Paulo - SP
Contato
Recent Profile Visitors
115053 profile views
-
spernega started following Classes Java - Bibliotecas, Replicar base local para base rede, Monitoramento de Tabelas and and 7 others
-
Bom dia Hiccup, Para fazer a importação usando o sqldeveloper, de uma olhada nesse site: ttp://www.oracle.com/webfolder/technetwork/tutorials/obe/db/hol08/sqldev_migration/msaccess/migrate_microsoft_access_otn.htm Para criar uma rotina de importação, acho que você precisaria criar um link no Oracle referenciando a base Access usando Heterogeneous Services. Se você quiser uma documentação do HS, me manda o seu e-mail, não consigo anexar pelo forum. Ou da pra caçar na net também. Depois disso você cria uma rotina para buscar os dados com as regras que você precisar.
- 1 reply
-
- replicar
- base local
-
(and 1 more)
Tagged with:
-
Bom dia, Ai não é tão simples. Tem alguns artigos por ai que tratam de auditoria com recursos do banco mesmo: https://vidadba.wordpress.com/2016/10/17/auditoria-de-objetos-no-oracle/ http://www.dartanghan.com.br/oracledb/auditoria-simples-audit_trail/ ALTER SYSTEM SET AUDIT_TRAIL=DB,EXTENDED SCOPE=SPFILE; dá uma olhada e veja se ajuda um pouco. Boa sorte
-
Boa tarde Robson, Existem algumas maneiras sim. Aqui eu criei uma tabela para armazenar as alterações, chamo de audit_tabela. Create Table Audit_Tabela( Nm_Tabe Varchar2(40), Pk1 Varchar2(120), Pk2 Varchar2(120), Pk3 Varchar2(120), Pk4 Varchar2(120), Pk5 Varchar2(120), Pk6 Varchar2(120), Pk7 Varchar2(120), No_User Varchar2(40), Tp_Tran Varchar2(1), Nm_Camp Varchar2(40), Vl_Anti Varchar2(255), Vl_Novo Varchar2(255), Dt_Alte Date, No_User_Rede Varchar2(50), Ip_User_Rede Varchar2(50)) Eu uso a PK das tabelas que eu quero monitorar. Crio uma trigger em cada tabela que eu quero monitorar para alimentar esta tabela. Se não me engano existem alguns recursos do próprio Oracle.
-
Bom dia José, Para montar esse resultado, o melhor é utilizar o LISTAGG (só a partir do banco 11), porém não existe um DISTINCT para o LISTAGG. Fiz um teste, veja se ajuda: create table xx ( col1 varchar2(2), col2 varchar2(2), col3 varchar2(2)) tablespace dados; insert into xx values('x','y','r0'); insert into xx values('x','y','r1'); insert into xx values('x','y','rs'); insert into xx values('x','y','r '); with x as( SELECT listagg(col1,',') WITHIN GROUP (ORDER BY col1) col1, listagg(col2,',') WITHIN GROUP (ORDER BY col2) col2, listagg(col3,',') WITHIN GROUP (ORDER BY col3) col3 from xx) select substr(regexp_replace(col1,'([^,]+)(,\1)+', '\1') ,1,10) col1, substr(regexp_replace(col2,'([^,]+)(,\1)+', '\1') ,1,10) col2, substr(regexp_replace(col3,'([^,]+)(,\1)+', '\1') ,1,10) col3 from x;
- 2 replies
-
- concatenação
- select
-
(and 1 more)
Tagged with:
-
Boa tarde, Não conheço esse do MySql, mas a Oracle tem o Oracle datamodeler que é free.
-
Bom dia Marcelo, Achei uma alternativa em outro forum: http://www.dbforums.com/showthread.php?828265-How-can-I-get-the-size-of-a-long-raw Veja se da para adaptar para sua necessidade. declare v_longcol long raw; v_size number; cursor get_row is select im_clas_veic from classificacao_veiculo where cd_clas_veic = '3C'; begin open get_row; fetch get_row into v_longcol; loop exit when get_row%notfound; v_size := utl_raw.length(v_longcol); --- loads lenght of long raw column into v_size dbms_output.put_line(v_size); --- displays lenght of column fetch get_row into v_longcol; end loop; close get_row; end; /
- 1 reply
-
- oracle
- banco de dados
-
(and 1 more)
Tagged with:
-
Como fazer um PL/SQL limitando o número de commits executando um arquivo .sql contendo inserts?
spernega replied to mlgrassi's topic in Oracle
Boa tarde, Dependendo de como você estiver executando os inserts, você pode setar o autocommit create table teste( Id_teste number(12)); set autocommit 10 insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1); insert into teste (id_teste) values(1);- 5 replies
-
- plsql
- arquivosql
-
(and 2 more)
Tagged with:
-
Boa tarde Tiago, Seria alguma coisa mais ou menos assim: Select ... From tabela_primeira t1, cadastro_Cliente t2 where (t1.pessoa = t2.codigo or t1.coligada = t2.codigo) ou Select ... From tabela_primeira t1, cadastro_Cliente t2 where t1.pessoa = t2.codigo union Select ... From tabela_primeira t1, cadastro_Cliente t2 where t1.coligada = t2.codigo /
-
Bom dia, sem responder diretamente a sua pergunta em relação à collections, a linha que você está iniciando é boa. Pelo meno eu uso dessa forma quando necessário. seguindo essa linha não resolveria, apesar de você ter 8 parâmetros? create or replace procedure pr_teste( pAtivo number, pCampo2 number, pCampo3 varchar2, pCampo4 varchar2, pCursor in out SYS_REFCURSOR ) is -- vQuery varchar2(1000); vWhere varchar2(1000) := ''; begin -- vQuery := 'select * from clientes where ativo = '||to_char(nvl(pativo,1)); -- if nvl(pCampo2,0) > 0 then vWhere := vWhere || ' and campo2 = '||to_Char(pcampo2); end if; if pCampo3 is not null then vWhere := vWhere || ' and campo3 = '||''''||pcampo3||''''; end if; if pCampo4 is not null then vWhere := vWhere || ' and campo4 = '||''''||pcampo4||''''; end if; -- if vWhere is not null then vQuery := vQuery||vWhere; end if; -- open pCursor for vQuery; loop fetch pCursor into ...
-
Boa tarde, Tente assim: (Eu não fiz nenhum teste) SELECT estabelecimento, dia, agenda, especialidade, sum(total_pacientes) total_pacientes, sum(total_pacientes_atendidos) total_pacientes_atendidos from ( SELECT DISTINCT obter_nome_estabelecimento(b.cd_estabelecimento) estabelecimento, TO_CHAR(a.DT_AGENDA,'dd/mm/yyyy') dia, initcap(b.DS_CURTA) agenda, tasy.obter_desc_espec_agenda(b.cd_especialidade) especialidade, COUNT(DISTINCT a.nm_paciente) total_pacientes, 0 total_pacientes_atendidos FROM tasy.agenda_consulta a, tasy.agenda b WHERE a.cd_agenda = b.cd_agenda AND b.ie_situacao = 'A' and trunc(a.dt_agenda) between :dt_inicial and :dt_final and ((b.CD_ESTABELECIMENTO = :cd_estab) or (:cd_estab = 0)) AND a.nm_paciente IS NOT NULL AND a.IE_STATUS_AGENDA <> 'C' and a.cd_agenda = 7216 GROUP BY TO_CHAR(a.DT_AGENDA,'dd/mm/yyyy'), b.ds_curta, tasy.obter_desc_espec_agenda(b.cd_especialidade), obter_nome_estabelecimento(b.cd_estabelecimento) HAVING COUNT(DISTINCT a.nm_paciente) > :total_paciente union all SELECT DISTINCT obter_nome_estabelecimento(b.cd_estabelecimento) estabelecimento, TO_CHAR(a.DT_AGENDA,'dd/mm/yyyy') dia, initcap(b.DS_CURTA) agenda, tasy.obter_desc_espec_agenda(b.cd_especialidade) especialidade, 0 atendidos, COUNT(DISTINCT a.nm_paciente) total_pacientes_atendidos FROM tasy.agenda_consulta a, tasy.agenda b WHERE a.cd_agenda = b.cd_agenda AND b.ie_situacao = 'A' and trunc(a.dt_agenda) between :dt_inicial and :dt_final and ((b.CD_ESTABELECIMENTO = :cd_estab) or (:cd_estab = 0)) AND a.nm_paciente IS NOT NULL AND a.IE_STATUS_AGENDA = 'E' and a.cd_agenda = 7216 GROUP BY TO_CHAR(a.DT_AGENDA,'dd/mm/yyyy'), b.ds_curta, tasy.obter_desc_espec_agenda(b.cd_especialidade), obter_nome_estabelecimento(b.cd_estabelecimento) HAVING COUNT(DISTINCT a.nm_paciente) > :total_paciente) group by estabelecimento, dia, agenda, especialidade;
-
Cara, não sei se estou falando bobagens, mas numa rotina que tem no meu sistema, que não fui eu quem desenvolveu, está assim: create or replace and compile java source named "jv_Send_mail" as import java.io.*; import java.sql.*; import java.util.Properties; import java.util.Date; import javax.activation.*; import javax.mail.*; import javax.mail.internet.*; import oracle.jdbc.driver.*; import oracle.sql.*;
-
Bom dia Patrick, Tente executar sem colocar n.qt_saida no group by.
-
Qual o custo de processamento das funções DBMS_UTILITY.FORMAT_ERROR_STACK e DBMS_UTILITY.FORMAT_ERROR_BACKTRACE?
spernega replied to Alexsandro Pimenta's topic in Oracle
Boa tarde Alex, Dei uma olha por ai, aparentemente as DBMS_UTILITY tem uma melhor performance em tempo de execução.- 1 reply
-
- exception
- dbms_utility
-
(and 1 more)
Tagged with:
-
Bom dia tainan, Do meu ponto de vista, os dois são válidos, são apenas de padrões diferente. Padrão tradicional e o ANSI (com join). Existem várias discussões sobra a facilidade do padrão ANSI. O padrão é mais fácil para usar a mesma query em DBs diferentes Eu trabalho sempre com o padrão tradicional e em todos os testes que eu já fiz, não percebi alteração de performance das querys.
- 1 reply
-
- 1
-
-
Bom dia , Tente algo assim: with x as( select 'EUSACD9484304934' matr from dual union select 'EUA CD9843274329' matr from dual) select case when length(substr(matr,1,4)) = 4 then substr(matr,1,4) else rpad(substr(matr,1,4),4,' ') end prim, -- substr(matr,5,100) segu from x;