Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从azure data factory v2调用Oracle存储过程_Oracle_Stored Procedures_Azure Data Factory_Self Hosting_Copy Activity - Fatal编程技术网

如何从azure data factory v2调用Oracle存储过程

如何从azure data factory v2调用Oracle存储过程,oracle,stored-procedures,azure-data-factory,self-hosting,copy-activity,Oracle,Stored Procedures,Azure Data Factory,Self Hosting,Copy Activity,我的要求是将数据从Oracle复制到SQL Server。在从Oracle数据库复制之前,我需要使用具有一定逻辑的过程更新Oracle表 如何从Azure datafactory执行Oracle存储过程 我提到 如果我使用执行程序名(PARAM)在preCopy脚本中失败,出现以下错误 Failure happened on 'Source' side. ErrorCode=UserErrorOdbcOperationFailed, Type=Microsoft.DataTransfer.Co

我的要求是将数据从Oracle复制到SQL Server。在从Oracle数据库复制之前,我需要使用具有一定逻辑的过程更新Oracle表

如何从Azure datafactory执行Oracle存储过程

我提到

如果我使用
执行程序名(PARAM)
preCopy
脚本中失败,出现以下错误

Failure happened on 'Source' side. 
ErrorCode=UserErrorOdbcOperationFailed,
Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException
Message=ERROR [42000] [Microsoft][ODBC Oracle Wire Protocol driver]
[Oracle]ORA-00900: invalid SQL statement
Source=Microsoft.DataTransfer.ClientLibrary.Odbc.OdbcConnector,
Type=System.Data.Odbc.OdbcException
Message=ERROR [42000] [Microsoft][ODBC Oracle Wire Protocol driver]
[Oracle]ORA-00900: invalid SQL statement,Source=msora28.dll
有人能帮忙吗

注意:我正在为data factory使用自托管运行时环境
谢谢

在Oracle中,
executex(Y)
是PL/SQL语句
beginx(Y)的SQL*Plus特定命令快捷方式;结束。由于您没有使用SQL*Plus,请尝试开始/结束语法。

我使用了查找活动和双表的SELECT语句。由于存储过程不能从SELECT语句调用。我创建了一个oracle函数,该函数调用存储过程。函数返回一个值,该值由查找活动接收。 定义函数时,必须添加语句PRAGMA autonomy\u TRANSACTION。这是因为Oracle不允许在默认情况下使用SELECT语句执行DML指令。然后,您需要定义存储过程中的DML指令将是一个自治事务

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

这是西班牙语的例子