Notícias
Forum Posts
- Forms - Item tipo TList
- EBS Applications / ERP - Queries uteis para o Oracle Applications
- Forms - limpar tree
- Forms - index Tlist
- PL/SQL - Assinatura Digital em arquivos XML (NFS-e )
- PL/SQL - Oracle 11g nao instala no Win7 64
- EBS Applications / ERP - Registrar Ordem Venda Automaticamente no OM
- PL/SQL - Duvida View
- PL/SQL - Restringir tamanho do Blob
- Forms - Endreco IP do servidor + forms 6i
Empregos/Vagas (2)
Último Post
Fazendo Rateio através de Funções Analíticas
11/04/2012 SQL Comments Off
Neste post, vamos mostrar como utilizar funções analíticas para fazer o rateio de um valor em diversas linhas de uma tabela.
Primeiro, vamos criar a tabela de teste:
CREATE TABLE glufke_teste (nro_nota NUMBER, item NUMBER, valor NUMBER); INSERT INTO glufke_teste VALUES ( 50, 1, 1.45); INSERT INTO glufke_teste VALUES ( 50, 2, 3.91); INSERT INTO glufke_teste VALUES ( 50, 3, 5.04);
SQL> SELECT * FROM glufke_teste;
NRO_NOTA ITEM VALOR
---------- ---------- ----------
50 1 1,45
50 2 3,91
50 3 5,04
SQL>
Nosso objetivo é ratear um valor proporcionalmente nessas linhas. Como exemplo prático, vamos distribuir o valor R$ 49,30! Leia mais..
Posts recentes
Buscar por INSERT/UPDATE dentro da ALL_SOURCE
15/02/2012 SQL Comments Off
É comum termos que procurar qual package ou qual procedure de banco que faz INSERT dentro de uma determinada tabela.
Nestes casos, podemos usar a ALL_SOURCE, que contém os códigos de todos programas de banco. Normalmente um select com LIKE resolve o problema:
SELECT * FROM all_source WHERE UPPER(text) LIKE '%INSERT%TABELA%'
O problema é que nem sempre o código está no padrão, por exemplo, o nome da tabela pode estar no lado ou na próxima linha!
INSERT INTO tabelax... INSERT INTO tabelax...
O mesmo vale pra UPDATES! Ou seja, se o comando INSERT estiver na linha anterior, essa consulta simples não vai retornar o que procuramos!
UPDATE tabelax SET... UPDATE tabelax SET...
Tutorial de Instalação do Oracle APEX 4.1
30/11/2011 DBA Comments Off
Este tutorial mostra como instalar o Apex 4.1 no Oracle XE. Aí vai um passo a passo:
1 – Baixar e instalar Oracle XE
Download nesse link: http://www.oracle.com/technetwork/database/express-edition/overview/index.html
Leia mais..
Impressões sobre o GUOB TECH DAY 2011
16/08/2011 Evento Comments Off
Participei do GUOB TECH DAY 2011 e posso dizer: Foi um evento memorável! Resolvi colocar aqui a opinião de algumas pessoas que participaram! Então, aí vai:

Pipelined Table Functions – Funções para retornar “tabelas virtuais”
21/07/2011 PL/SQL, SQL Comments Off
Neste artigo irei apresentar um recurso muito bom que existe no Oracle Database desde a versão 9i e chama-se Pipelined Table Function.
Este recurso permite criar funções que retornam dados como se fossem uma tabela virtual, podendo transformar os dados de retorno enquanto eles são produzidos, ou seja, é possível alterar os dados pesquisados em uma tabela, linha por linha, enquanto eles são processados, sem ter que esperar pelo retorno completo do “result set” (conjunto de dados que são retornados pela função).
Este recurso é ótimo para ETL (Extract, Transform, and Load), pois é rápido e consome menos memória que outros métodos que podem ser utilizados para o mesmo objetivo, como por exemplo, preencher um cursor e percorrê-lo para transformar e retornar dados.
Seguem abaixo 3 scripts que demonstram como criar e testar uma Pipelined Table Function. Os scripts utilizam a tabela EMPLOYEES do schema de exemplo HR.
Para iniciar o passo-a-passo dos itens abaixo, é necessário conectar-se previamente no Banco de Dados desejado, através do SQL Plus, com um usuário com privilégios administrativos (usuário contendo a role DBA ou o privilégio de sistema SYSDBA) ou com o usuário HR.
1- Criando a package HR.PKG_TYPES
A package HR.PKG_TYPES contém os tipos de dados que são criados para retornarem uma tabela virtual na função que será criada no próximo passo:
create or replace package HR.PKG_TYPES as
TYPE TABLEEMPTYPE IS TABLE OF EMPLOYEES%ROWTYPE;
TYPE ROWEMPTYPE IS RECORD(
EMPLOYEE_ID EMPLOYEES.EMPLOYEE_ID%TYPE,
FIRST_NAME EMPLOYEES.FIRST_NAME%TYPE,
LAST_NAME EMPLOYEES.LAST_NAME%TYPE,
EMAIL EMPLOYEES.EMAIL%TYPE,
PHONE EMPLOYEES.PHONE_NUMBER%TYPE,
HIRE_DATE EMPLOYEES.HIRE_DATE%TYPE,
JOB_ID EMPLOYEES.JOB_ID%TYPE,
SALARY EMPLOYEES.SALARY%TYPE,
COMMISSION_PCT EMPLOYEES.COMMISSION_PCT%TYPE,
MANAGER_ID EMPLOYEES.MANAGER_ID%TYPE,
DEPARTMENT_ID EMPLOYEES.DEPARTMENT_ID%TYPE
);
END;
/
glufke.net sorteia livros no twitter
11/08/2010 Geral Comments Off
O site glufke.net possui alguns livros que estão no acervo e vão ser sorteados para os seguidores do twitter!
Estes serão os livros sorteados:

SORTEIO ENCERRADO – LISTA DOS GANHADORES
Dia 13/08/2010 – Guia Novatec – Oracle 10g SQL – GANHADOR: @garcia_joao
Dia 20/08/2010 – Guia Novatec – Cascading Style Sheets – GANHADOR: @marcelo_hugo
Dia 27/08/2010 – Guia Novatec – Java 2 – GANHADOR: @stefandeckert
Dia 03/09/2010 – Guia Novatec – JavaServer Pages – GANHADOR: @jeroqueiroz
Dia 10/09/2010 – Livro Programação de Jogos com C++ e DirectX – GANHADOR: @anitokj
Como Participar?
1. Para concorrer você deve seguir no twitter o @glufke
2. Enviar a seguinte mensagem:
Quero participar do sorteio de livros de oracle, java, etc do @glufke – http://bit.ly/cMIzSV
3. Aguardar o sorteio nos dias acima ao MEIO DIA!
Normas
1. O Sorteio se dará de forma aleatória para todos que estão seguindo @glufke e deram RT na mensagem.
2. O vencedor será contatado via twitter e será solicitado o endereço para enviar o livro.
3. O envio do livro será pago pelo GLUFKE.NET via encomenda registrada
Qualquer dúvida, envie para o twitter @glufke
BOA SORTE E BONS ESTUDOS
Concorrentes no Oracle EBS com saída em Excel
15/04/2010 ERP Comments Off
Este artigo demonstra como criar Concurrents no Oracle EBS com saída para Microsoft Excel. Aí vai um passo a passo:
1 – Adicionar o tipo de saída Microsoft Excel
Na responsabilidade Administrador de Sistema você deve acessar o caminho abaixo:
Instalar -> Idiomas
Insira um registro com estes valores:
Formato do Arquivo = Text
Tipo de Mime = application/vnd.ms-excel
Descrição = Microsoft Excel
Leia mais..
Local Index vs. Global Index em tabela particionada
31/03/2010 SQL Comments Off
A maioria das pessoas tem essas perguntas sobre Index Partition:
- O que é um Local Index?
- O que é um Global Index?
- Quando você forçaria a criação de um Global Index em uma partition table?
- Quando você recomendaria criar um Global Index em vez de um Local Index?
Para responder a essas perguntas….
1. O que é um Local Index?
Local Indexes particionados são mais fáceis de gerenciar, cada partição do Local Index está associado a uma partição. Eles também oferecem maior disponibilidade e são comuns em ambientes de DSS. Quando tomamos qualquer ação (MERGE, SPLIT,EXCHANGE etc) em um Local Index, isso impacta apenas aquela partição e as outras estarão disponíveis. Nós não podemos adicionar explicitamente um Local Index para uma nova partição. O Local Index será adicionado implicitamente a nova partição, quando for criada uma nova partição na tabela. Da mesma forma, não podemos dropar o índice local em uma partição específica. Ele pode ser dropado automaticamente quando nós dropamos a partição da tabela subjacente. Local Indexes podem ser UNIQUE quando a chave da partição é parte do índice composto. Unique Local Indexes são úteis para o ambiente OLTP. Podemos também criar bitmap indexes em tabelas, com a restrição de que os índices de bitmap deve ser local para a tabela particionada. Eles não podem ser Global Indexes.
SQL> CREATE TABLE employees 2 (employee_id NUMBER(4) NOT NULL, 3 last_name VARCHAR2(10), 4 department_id NUMBER(2)) 5 PARTITION BY RANGE (department_id) 6 (PARTITION employees_part1 VALUES LESS THAN (10) TABLESPACE ODS_STAGE_DATA, 7 PARTITION employees_part2 VALUES LESS THAN (20) TABLESPACE ODS_STAGE_DATA, 8 PARTITION employees_part3 VALUES LESS THAN (30) TABLESPACE ODS_STAGE_DATA); Table created. SQL> declare 2 v_no number :=1; 3 begin 4 delete employees; 5 for i in 1..10 loop 6 insert into employees values(v_no,'name...',v_no); 7 v_no := v_no+1; 8 end loop; 9 end; 10 / PL/SQL procedure successfully completed. SQL> SQL> create index idx_local on employees(last_name) local; Index created. SQL>
Larry Ellison é o Ironman
26/03/2010 Fun Stuff Comments Off
Iniciando a categoria “Fun-Stuff”, trazemos a você a revelação do ano: Larry Ellison é o Ironman.
Você pensou que o Iron Man era mesmo o bilionário industrial Tony Stark, temos provas de que isso é apenas um apelido mal disfarçado do magnata bilionário da Oracle, Larry Ellison. A prova:
Larry Ellison – Oracle:

Tony Stark – Ironman

Tony Stark tem o ROSTO do Larry, a VOZ do Larry, os CARROS do Larry, o DINHEIRO de Larry e os AVIÕES também. Pra completar a lista de evidências, temos a Oracle como um dos principais patrocinadores do filme:
Está comprovado!
Edition-Based Redefinition: a feature mais matadora do Oracle 11g R2
04/02/2010 DBA, PL/SQL Comments Off
Eu considero Edition-Based Redefinition a nova característica mais matadora do Oracle Database 11g Release 2. Em suma, é a capacidade de executar uma atualização de aplicações online. É também um recurso gigante, tão grande que vai demorar pelo menos três colunas para descrevê-lo. Vou começar em Como usar Edition-Based Redefinition afim de aplicar “patches” em sistemas.
Ao longo dos anos, o banco Oracle permite realizrmos muitas operações online, como:
- Modificar a maioria dos parâmetros (Apenas 90 dos 350 não são modificáveis online.)
- Reorganização de objetos (transformar uma tabela não particionada em uma particionada, recuperando um espaço livre, e assim por diante)
- Criar índices
- Aplicação de patches no Banco de dados com o Oracle Real Application Clusters
- Atualizar o banco de dados Oracle de release em release
O resultado é que quase todas mudanças em nível de banco de dados pode ser feito enquanto o banco está funcionando e realizando transações – com algumas raras excepções gritantes, como re-criar uma procedure, alterar triggers, adicionar grants, revoke de grant, e modificar views. Em suma, os objetos que constituem esse tipo de modificação não podiam ser modificadas, enquanto os usuários estavam utilizando. Se uma procedure estava sendo executada e um DBA tentou atualizar ela (CREATE OR REPLACE o código com o novo código mexido, afim de corrigir um bug), o DBA iria ficar esperando (BLOCKED) por essa pessoa até terminar sua execução.
Além disso, qualquer pessoa que tentou posteriormente executar uma procedure que o DBA está tentando substituir também ficaria bloqueado pelo DBA. E na maioria dos casos, o DBA não modifica apenas uma única procedure, mas muitas, e o CREATE OR REPLACE do novo código da procedure tenderia a invalidar outros objetos dependentes também. O banco de dados parece “congelar”, o DBA não pode realizar as tarefas de patch (substituir alguns procedimentos, pacotes, views, triggers, e assim por diante), e os usuários finais não podem realizar as suas tarefas. Eles acabaram bloqueando e travando-se mutuamente.
Isto tudo termina tudo com o Oracle Database 11g Release 2 e o Edition-Based Redefinition, que permite aos DBAs e usuários finais acessar mais de uma ocorrência de uma stored procedure, trigger, view, e outros objetos e, portanto, isolar as mudanças em um esquema. Começando com o Oracle Database 11g Release 2, um único esquema pode agora ter duas ou mais ocorrências (vamos pensar em “versões”) de um stored procedure (função, trigger, e assim por diante) ou uma view ou de sinônimos e todos seus metadados relacionados, tais como GRANTS a esses objetos. (Estas duas ocorrências são independentes, eles coexistem, mas não interferem umas com as outras.) A “mágica” que permite isso é o novo objeto de edição (EDITION), que introduz um novo namespace transparente que permite mais de uma ocorrência ao mesmo tempo de uma stored procedure, trigger e assim por diante. Leia mais..
