Algumas vezes necessitamos executar programas ou SELECTS direto no banco de dados, ou seja, por fora do Aplicativo Oracle, através de ferramentas como SQL Navigator, SQL Tools, PL/SQL Developer ou outras ferramentas do gênero. Quase sempre, para VIEWS que são utilizadas no EBS, é necessário que o ambiente esteja com algumas variáveis “setadas” para que possamos visualizar os dados. Caso contrário, nossa QUERY ou programa não retorna nada. Segue abaixo um SCRIPT que sempre uso e que prepara o ambiente como se estivéssemos conectados no Oracle Applications. Ele funciona para 99% dos casos. Salvo outros procedimentos mais específicos que podem ocorrer dependendo do módulo e responsabilidade que desejamos acessar. Execute este SCRIPT na ferramenta que você estiver utilizando para acessar o banco de dados e substitua as varáveis: '&user_name' e '&responsibility_key' pelo nome do usuário e chave da responsabilidade, respectivamente. Este último você encontra no cadastro de responsabilidades no Administrado do Sistema.
declare
p_application_id number;
p_responsibility_id number;
p_responsibility_key varchar2(200);
p_user_id number;
p_user_name varchar2(200);
p_org_id number;
begin
--
begin
p_user_name := '&user_name';
--
select user_id
into p_user_id
from fnd_user
where user_name = p_user_name;
exception
when no_data_found then
raise_application_error(-20001,'Usuário não encontrado: '||p_user_name);
when others then
raise_application_error(-20002,'Erro ao recuperar o id do usuário '||p_user_name||'. Erro: '||sqlerrm);
end;
--
begin
p_responsibility_key := '&responsibility_key';
--
select application_id
,responsibility_id
into p_application_id
,p_responsibility_id
from fnd_responsibility
where responsibility_key = p_responsibility_key;
exception
when no_data_found then
raise_application_error(-20003,'Responsabilidade não encontrada: '||p_responsibility_key);
when others then
raise_application_error(-20004,'Erro ao recuperar o id da responsabilidade '||p_responsibility_key||'. Erro: '||sqlerrm);
end;
--
begin
fnd_client_info.setup_client_info( p_application_id
,p_responsibility_id
,p_user_id
,0);
exception
when others then
raise_application_error(-20005,'Erro ao configurar variáveis de sessão (FND_CLIENT_INFO.SETUP_CLIENT_INFO). Erro: '||sqlerrm);
end;
--
begin
fnd_global.apps_initialize( p_user_id
,p_responsibility_id
,p_application_id
,0);
exception
when others then
raise_application_error(-20006,'Erro ao configurar variáveis de sessão (FND_GLOBAL.APPS_INITIALIZE). Erro: '||sqlerrm);
end;
--
begin
p_org_id := &p_org_id;
--
-- Para versão R12 do Oracle Applications (caso não seja, comente esta parte)
mo_global.set_policy_context( p_access_mode => 'S'
,p_org_id => p_org_id);
exception
when others then
raise_application_error(-20007,'Erro ao configurar variáveis de sessão (MO_GLOBAL.SET_POLICY_CONTEXT). Erro: '||sqlerrm);
end;
end;Obs.: Note que existe um adendo no código, para a versão R12 do Oracle Applications.
Falows!
Nenhum comentário:
Postar um comentário