Oracle procedimentos armazenados são descritos exatamente a forma como eles interagem . Eles são codificados procedimentos utilizando Oracle PL /SQL que residem permanentemente no banco de dados . Desta forma, os pacotes Oracle podem ser reutilizados e , como a sua informação está no banco de dados e não realizada em arquivos de origem diferentes, a informação é segura. A criação de pacotes Oracle envolve a criação de um cabeçalho , especificando os protótipos de funções e parâmetros , e o corpo da embalagem que contém o código real . Tanto o cabeçalho e corpo podem ser colocados num único ficheiro de texto , mas de boa prática indica que eles devem ser armazenados separadamente. Instruções
1
Criar dois arquivos de texto com um sufixo de arquivos SQL. Estes arquivos de texto irá conter o código fonte para o cabeçalho do pacote Oracle e corpo de pacote Oracle , respectivamente. Eles vão atuar como fonte de comandos para criar o pacote no banco de dados como um procedimento armazenado.
2
entrada do cabeçalho do pacote comandos para criar o pacote. Edite o arquivo de cabeçalho e coloque os comandos lá para criar os protótipos de função . O arquivo de cabeçalho especifica para o intérprete do Oracle o que esperar quando a compilação do corpo do pacote em termos de parâmetros e valores de retorno. Um exemplo do cabeçalho do pacote é mostrado abaixo:
CREATE OR REPLACE PACKAGE update_planned_hrs
IS
Planned_hours NÚMERO (4);
PROCEDIMENTO set_new_planned ( p_emp_id em número, p_project_id em número, p_hours em número) ;
FUNÇÃO existing_planned ( p_emp_id em número, p_project_id em número) número de devolução ;
update_planned_hrs fim;
/< br >
Este é um cabeçalho de pacote típico. Ele pode ser colocado em seu próprio arquivo de origem ou no mesmo arquivo de origem como o corpo do pacote . É uma boa prática para manter os dois em seus próprios arquivos de origem , no entanto. . Sempre executar os comandos de criação de pacote ( cabeçalho) primeiro
3
completar o pacote , inserindo os detalhes do corpo do pacote, correspondentes às funções de cabeçalho e parâmetros entrou assim:
CREATE OR REPLACE PACKAGE BODY update_planned_hrs
IS
PROCEDIMENTO set_new_planned ( p_emp_id em número, p_project_id em número, p_hours em número)
IS
BEGIN
ATUALIZAÇÃO employee_on_activity ea
SET ea.ea_planned_hours = p_hours
ONDE
ea.ea_emp_id = p_emp_id
E ea.ea_proj_id = p_project_id ;
EXCEÇÃO
QUANDO ENTÃO NO_DATA_FOUND
RAISE_APPLICATION_ERROR ( -20100 , 'Não como empregado ou projeto ');
END set_new_planned ;
FUNÇÃO
existing_planned ( p_emp_id em número, p_project_id em número) número de devolução
IS
existing_hours NÚMERO (4);
BEGIN
Selecione eA . ea_planned_hours EM existing_hours
DE employee_on_activity ea
ONDE
ea.ea_emp_id = p_emp_id
E ea.ea_proj_id = p_project_id ;
RETURN ( existing_hours );
EXCEÇÃO
QUANDO ENTÃO NO_DATA_FOUND
RAISE_APPLICATION_ERROR ( -20100 , 'Não como empregado ou projeto ');
END existing_planned ;
update_planned_hrs fim;
/
4
teste o pacote funciona por meio de dados de teste apropriados. Isso envolverá chamando o pacote a partir da linha de comando no Oracle SQLPlus da seguinte forma:
DECLARAR
l_emp_id NUMBER;
l_project_id NUMBER;
BEGIN < br >
l_emp_id : = 1;
l_project_id : = 12;
- obter as horas planejadas existentes para este funcionário usando a variável de pacote persistente
update_planned . . planned_hours = update_planned.existing_planned ( l_emp_id , l_project_id );
- Agora atualizar as horas do empregado planejado
update_planned.planned_hours : = update_planned.planned_hours + 10 ;
update_planned . set_new_planned ( l_emp_id , l_project_id , update_planned.planned_hours );
- saída dos resultados
dbms_output.put_line (' Funcionário '