Jeg brugte en opslagsaktivitet og en SELECT-sætning af DUAL TABLE. På grund af de lagrede procedurer kan der ikke kaldes fra en sætning SELECT. Jeg oprettede en orakelfunktion, og funktionen kalder den lagrede procedure. Funktionen returnerer en værdi, og denne værdi modtages af opslagsaktiviteten. Når du definerer funktionen, skal du tilføje sætningen PRAGMA AUTONOMOUS_TRANSACTION. Dette skyldes, at Oracle som standard ikke tillader at udføre DML-instruktioner med en SELECT-sætning. Derefter skal du definere, at DML-instruktioner i den lagrede procedure vil være en selvstændig transaktion.
--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;
Dette er et eksempel på spansk. https://dev.to /maritzag/ejecutar-un-stored-procedure-de-oracle-desde-data-factory-2jcp