sql >> Databasteknik >  >> RDS >> Oracle

Hur man ringer Oracles lagrade procedur från azure data factory v2

Jag använde en Lookup Activity och en SELECT-sats av DUAL TABLE. På grund av de lagrade procedurerna kan inte anropas från en sats SELECT. Jag skapade en orakelfunktion och funktionen anropar den lagrade proceduren. Funktionen returnerar ett värde och detta värde tas emot av uppslagsaktiviteten. När du definierar funktionen måste du lägga till satsen PRAGMA AUTONOMOUS_TRANSACTION. Detta beror på att Oracle inte tillåter exekvering av DML-instruktioner med en SELECT-sats som standard. Sedan måste du definiera att DML-instruktioner i den lagrade förfarandet kommer att vara en autonom 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;

Exempeluppslag

Detta är ett exempel på spanska. https://dev.to /maritzag/ejecutar-un-stored-procedure-de-oracle-desde-data-factory-2jcp



  1. summan av den högsta händelsen i följd

  2. Hur man skapar VARRAYs som PL/SQL-blockmedlem i Oracle Database

  3. Allvarligt fel påträffades under dataläsning

  4. Index var utanför gränserna för matrisen