Em ciência da computação, um lookup é uma matriz que substitui um campo identificador de uma tabela pela sua descrição somente em tempo de execução do programa, entretanto para a camada de negocio interna os dados continuam sendo manipulados pelo seu identificador, este é um recurso muito útil para manipular tabelas que possuem uma chave estrangeira tornado possível que esta tabela seja referenciada por sua descrição mas retornando o seu identificador para a tabela que a referenciou.
Está é a parte final do tutorial básico Oracle Application Express utilizando o Oracle Database, caso queira saber mais sobre o Oracle Application Express entre em contato conosco através do menu Contato deste blog.
Alterando um Relatório e um Formulário para Adicionar um Campo Lookup
1 – Vamos adicionar um nova tabela chamada categoria que será referenciada a tabela de funcionário, utilize os scripts abaixo:

SQL Command
2 – No Application Builder edite o seu relatório utilizando o botão direito e escolhendo a opção Edit:

Editar Relatório
3 – Na opção Source, modifique a instrução SQL adicionando o campo que você deseja inserir:

Edita SQL
4 – Ao aplicar as mudanças você será avisado que as modificações não serão aplicadas automaticamente a este relatório, clique em aplicar as mudanças:

Aviso de Mudança
5 – Execute o relatório e na opção Actions, escolha Select Columns e adicione a nova coluna ao relatório:

Selecionando Colunas
6 – Você pode conferir que a nova coluna já foi inclusa no relatório e possui valores nulos:

Nova Coluna
7 – Volte a pagina inicial da sua aplicação, escolha o formulário para ser editado e nos itens do formulário com o botão direto do mouse clique em Create Page Item:

Itens do Formulário
8 – Na criação do novo item escolha Select List:

Select List
9 – Insira o nome para seu novo campo e clique em próximo:

Nome do Campo e Ordem no Form
10 – Adicione o rotulo para seu campo, este rotulo irá aparecer no formulário:

Label
11 – Na configuração do item, deixe os padrões e clique em próximo:

Configuração
12 – Na lista de valores, role a pagina até o final e clique em e criar um Dynamic LOV, uma assistente para criação do LOV será aberto em uma nova janela, quando você terminar a criação do LOV sua tela será alimentada com um código SQL como da figura abaixo:

Lista de Valores – Dynamic LOV
13 – No assistente de criação do LOV escolha o esquema para seu workspace:

LOV – Esquema
14 – Escolha a tabela para efetuar o lookup:

Tabela para Lookup
15 – Crie o Lookup, escolhendo a descrição que será mostrada e o identificador que será gravado:

Campos Lookup
16 – O assiste criará o código SQL para seu lookup, clique em Finish e você retornará ao assistente de mudança do formulário e o código SQL será atribuído a sua configuração da lista, clique em próximo para passar para a ultima etapa do assistente:

Lookup SQL
17 – Está é a ultima etapa e importante configuração para que seu formulário funcione corretamente, em Origem utilize a opção “Sempre, substituindo qualquer valor existente em estado de sessão”, em Tipo de Origem escolha “Coluna do Banco de Dados” e insira o nome da coluna no qual será conectada a tabela do formulário:

Cria Item
18 – Rode sua aplicação, teste seu formulário e seu relatório. O seu formulário agora possui um campo lookup na tabela de funcionários sendo referenciado a tabela de categorias:

Lookup – Select List
11 – Assim que utilizar a descrição do campo de categorias o lookup será executado retornando o campo do identificador para ser gravado em sua tabela, assim como você pode ver no relatório:

Relatório – ID Categoria
Terminamos este tutorial e agora você já sabe como criar uma aplicação básica para web utilizando o Oracle Apex e o banco de dados Oracle, está é uma das melhores ferramentas para escrever aplicações web com banco dados, no qual se obtém velocidade de desenvolvimento, ótimo desempenho, o melhor acesso a dados sem escrever muito código e além de todos os benefícios que esta completa ferramenta proporciona ainda é assinada pela Oracle. Não precisa dizer mais nada, não é?
SQL
-- Altera a tabela de funcionario
ALTER TABLE FUNCIONARIOS ADD ID_CATEGORIA NUMBER(5)
-- Cria tabela de categoria
create table CATEGORIA(
ID_CATEGORIA NUMBER(5),
DESCRICAO VARCHAR2(30),
CONSTRAINT pk_ID_CATEGORIA PRIMARY KEY (ID_CATEGORIA)
);
-- Cria sequencia
CREATE SEQUENCE ID_CATEGORIA_SEQ START WITH 1;
-- Cria Trigger
CREATE OR REPLACE trigger BI_CATEGORIA
before insert on CATEGORIA
for each row
begin
if :NEW.ID_CATEGORIA is null then
select ID_CATEGORIA_SEQ.nextval into :NEW.ID_CATEGORIA from dual;
end if;
end;
-- Insere dados na categoria
INSERT INTO CATEGORIA VALUES (NULL, 'HARD ROCK');
INSERT INTO CATEGORIA VALUES (NULL, 'GRUNGE');
INSERT INTO CATEGORIA VALUES (NULL, 'ROCK');