sql >> Base de Datos >  >> RDS >> Oracle

Cómo llamar al procedimiento almacenado de Oracle desde Azure Data Factory v2

Usé una actividad de búsqueda y una instrucción SELECT de DUAL TABLE. Debido a los procedimientos almacenados, no se pueden llamar desde una instrucción SELECT. Creé una función de Oracle y la función llama al procedimiento almacenado. La función devuelve un valor y la actividad de búsqueda recibe este valor. Cuando define la función, debe agregar la instrucción PRAGMA AUTONOMOUS_TRANSACTION. Esto se debe a que Oracle no permite ejecutar instrucciones DML con una instrucción SELECT de forma predeterminada. Luego, debe definir que las instrucciones DML en el procedimiento almacenado serán una transacción 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;

Búsqueda de ejemplo

Este es un ejemplo en español. https://dev.to /maritzag/ejecutar-un-procedimiento-no-almacenado-de-oracle-desde-data-factory-2jcp