sql >> Database teknologi >  >> RDS >> Oracle

Sådan kalder du Oracle-lagret procedure fra azure data factory v2

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;

Eksempelopslag

Dette er et eksempel på spansk. https://dev.to /maritzag/ejecutar-un-stored-procedure-de-oracle-desde-data-factory-2jcp



  1. en bedre tilgang end at gemme mysql-adgangskode i almindelig tekst i konfigurationsfil?

  2. MySQL returnerer sand/falsk, hvis col-værdi !=angivet værdi

  3. Forespørgsel til at beregne summen af ​​afstand (længdegrad, breddegrad) i på hinanden følgende rækker i Mysql

  4. INDSÆT med 10 millioner forespørgsler under 10 minutter i Oracle?