Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como chamar o procedimento armazenado do Oracle da fábrica de dados do Azure v2


Eu usei uma atividade de pesquisa e uma instrução SELECT de DUAL TABLE. Devido aos procedimentos armazenados não pode ser chamado de uma instrução SELECT. Eu criei uma função oracle e a função chama o procedimento armazenado. A função retorna um valor e esse valor é recebido pela atividade de pesquisa. Ao definir a função, você deve adicionar a instrução PRAGMA AUTONOMOUS_TRANSACTION. Isso ocorre porque o Oracle não permite executar instruções DML com uma instrução SELECT por padrão. Então, você precisa definir que as instruções DML no Stored Procedure serão uma transação autônoma.
--Tabla
CREATE TABLE empleados(
   emp_id NUMBER(9),
   nombre VARCHAR2(100),
   CONSTRAINT empleados_pk PRIMARY KEY(emp_id),
);

create or replace procedure insert_empleado (numero in NUMBER, nombre in VARCHAR2) is
 begin
    INSERT INTO empleados (emp_id, nombre)
    Values(numero, nombre);
COMMIT;
end;

create or replace function funcinsert_empleado (numero in NUMBER, nombre in VARCHAR2)
return VARCHAR2 
is
PRAGMA AUTONOMOUS_TRANSACTION;
begin
  insert_empleado (numero, nombre);
  return 'done';
end;
--statement in query of lookup
SELECT  funcinsert_empleado ('1', 'Roger Federer') 
FROM DUAL;

Exemplo de pesquisa

Este é um exemplo em espanhol. https://dev.to /maritzag/ejecutar-un-stored-procedure-de-oracle-desde-data-factory-2jcp