Ich habe eine Lookup-Aktivität und eine SELECT-Anweisung von DUAL TABLE verwendet. Aufgrund der gespeicherten Prozeduren kann SELECT nicht von einer Anweisung aufgerufen werden. Ich habe eine Orakelfunktion erstellt und die Funktion ruft die gespeicherte Prozedur auf. Die Funktion gibt einen Wert zurück und dieser Wert wird von der Lookup-Aktivität empfangen. Wenn Sie die Funktion definieren, müssen Sie die Anweisung PRAGMA AUTONOMOUS_TRANSACTION hinzufügen. Dies liegt daran, dass Oracle standardmäßig nicht erlaubt, DML-Anweisungen mit einer SELECT-Anweisung auszuführen. Dann müssen Sie definieren, dass DML-Anweisungen in der gespeicherten Prozedur eine autonome Transaktion sein werden.
--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;
Dies ist ein Beispiel auf Spanisch. https://dev.to /maritzag/ejecutar-un-stored-procedure-de-oracle-desde-data-factory-2jcp