sql >> Databáze >  >> RDS >> Oracle

Jak zavolat uloženou proceduru Oracle z Azure data factory v2

Použil jsem vyhledávací aktivitu a příkaz SELECT DUAL TABLE. Vzhledem k uloženým procedurám nelze volat z příkazu SELECT. Vytvořil jsem funkci orákula a funkce volá uloženou proceduru. Funkce vrací hodnotu a tato hodnota je přijata vyhledávací aktivitou. Když definujete funkci, musíte přidat příkaz PRAGMA AUTONOMOUS_TRANSACTION. Důvodem je, že Oracle ve výchozím nastavení neumožňuje provádět instrukce DML pomocí příkazu SELECT. Potom musíte definovat, že instrukce DML v uložené proceduře budou autonomní transakcí.

--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;

Příklad vyhledávání

Toto je příklad ve španělštině. https://dev.to /maritzag/ejecutar-un-stored-procedure-de-oracle-desde-data-factory-2jcp



  1. spojil řádky tabulky do sloupců s názvy sloupců z původních řádků

  2. Proč příkaz 'explain' přináší různé výsledky na stejném příkazu SQL?

  3. JDBC Zpracování výjimek dávkového vložení

  4. Má mysql ekvivalent analytických funkcí Oracle?