Ilustrando a necessidade: Tenho um Sistema de Informação rodando em Banco de Dados Oracle que possui todas as informações de Agendamentos de Consultas de Pacientes. Porem preciso cruzar essas informações com outro sistema rodando em SQL Server.
Para isso, no Banco de Dados Oracle foi disponibilizado uma Package que possui a procedure Proxima_Agenda_Paciente, que é composta por um parâmetro de entrada(in) que seria o ID do paciente e 3 parâmetro de Saida(out), que seria a data da próxima consulta do paciente, classificação da agenda e especialidade da agenda.
Essa procedure deve ser executada utilizando Linked Server, para isso o mesmo deve estar configurado no SQL Server. Como configurar Linked Server
Para demonstrar a procedure funcionando, criei a tabela abaixo que receberá os valores retornado na procedure do banco de dados Oracle:
Abaixo o código utilizado para executar a procedure e alimentar a tabela.
1º) Populei um cursor com os IDs de pacientes para que eu possa passar como parâmetro de entrada na Procedure.
2º) Após, fui executando a procedure com cada ID de Paciente do cursor e inserindo os valores retornados pela procedure do Oracle na tabela Proxima_Agenda_Paciente, no SQL Server.
Código:
Declare
Cursor01 Cursor For
Select Rghc From Openquery(Tasyhom, 'Select Pf.Nr_Prontuario||Pf.Nr_Pront_Dv Rghc
From Pessoa_Fisica Pf
Inner Join Agenda_Consulta Ac
On Pf.Cd_Pessoa_Fisica = Ac.Cd_Pessoa_Fisica
Where
Dt_Agenda > Sysdate
And Rownum < 200');
Declare
@Rghc Varchar(10),
@W_Data Varchar(200),
@W_Classificacao Varchar(40),
@W_Especialidade Varchar(100);
Begin
Open Cursor01
Fetch Next From Cursor01 Into @Rghc
While @@Fetch_Status = 0
Begin
Set @W_Data = ''
Set @W_Classificacao = ''
Set @W_Especialidade = ''
Execute ( 'begin tasy.Pkg_Dados_Tasy_Icesp.Proxima_Agenda_Paciente(?,?,?,?); end;',
@Rghc, @W_Data Output, @W_Classificacao Output, @W_Especialidade Output) At Tasy;
Insert Into Proxima_Agenda_Paciente(Rghc, Data, Classificacao, Especialidade )
Values(@Rghc, @W_Data,@W_Classificacao, @W_Especialidade )
Fetch Next From Cursor01 Into @Rghc;
End;
Deallocate Cursor01;
End;
Consultando a Tabela no SQL Server:
Obrigado!!
Legal Brother, parabéns!! ;)
ResponderExcluirObrigado!!
ExcluirAbração!!