如何从azure data factory v2调用Oracle存储过程
我的要求是将数据从Oracle复制到SQL Server。在从Oracle数据库复制之前,我需要使用具有一定逻辑的过程更新Oracle表 如何从Azure datafactory执行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
执行程序名(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;
这是西班牙语的例子