c# - SSIS 参考错误 Oracle DataAccess - 使用自定义类型参数调用 PL/SQL 过程
问题描述
我正在尝试使用 SSIS 工作流中的自定义类型参数调用 PL/SQL 过程。
我试过了:
使用 Oracle 的 ADO.NET 连接管理器 - 不起作用,因为它不允许参数映射。
使用 OLEDB 连接管理器 - 好的,但仅适用于 INPUT / OUTPUT 上的简单数据类型 -> 不能解决我的问题,因为我不能使用自定义类型,而且我没有使用 IN OUT 参数的选项(也发生在 Oracle db 上的程序中)。
然后,我尝试通过实现用于自定义 UDT 映射的所有必要类和接口,通过 C# 制作我自己的自定义映射。通过这种方式,我设法将自定义类型参数传入和传出过程。(作为 ConsoleApplication 创建的 POC)。
我在创建自定义类时遵循的教程:https ://www.codeproject.com/Articles/1139474/ODP-NET-User-Defined-Type-Implementation
我尝试使用在 SSIS 脚本任务中的控制台应用程序中使用的相同代码。而这里我遇到了一个奇怪的问题☹ 为了实现程序中使用的customType,我使用了Oracle.DataAccess 引用。每当我将此引用添加到脚本任务时,执行时都会出现以下错误:
一旦我实现一个使用对 Oracle.DataAccess 的引用的类,就会发生错误。类声明本身似乎导致了这个错误,因为即使我不使用它们在 scriptMain 中,错误仍然存在。每当我注释掉类(但将引用保留在脚本中)时,组件都会毫无错误地执行......</p>
配置:
我正在使用 Visual Studio 2017 Enterprise Edition,
TargetServerVersion:SQL Server 2017
包上的目标框架:.NET Framework 4.5
Oracle 客户端的 PATH 环境设置:C:\app\client32\product\12.2.0\client_1\bin
我尝试在项目和包级别更改 SQL Server 目标、目标框架和其他一些设置,但没有任何效果。
任何人都知道如何解决这个问题,以便我可以在脚本任务中使用我的 C# 自定义映射?
也欢迎提供具有自定义参数的调用程序的任何其他解决方案:)
最后,如果有人知道一个好的自动 UDT 映射器,我将不胜感激 :) 我尝试了 Odapter - 好的,但使用 Oracle.ManagedDataAccess 而不是 DataAccess,我似乎无法在那里使用 OracleDbType.Object ...
编辑:我设法发现每当我从引用(f.ex. IOracleCustomType)实现接口时就会出现问题。如果我只将此类型用作方法中的参数,则脚本将执行。一旦我添加了一个实现接口的类,就会出现“无法加载脚本以执行”错误。
解决方案
推荐阅读
- matlab - 使用 Matlab 从一张图中的许多 polyfitted 曲线中获取最大值
- amazon-web-services - 如何使用 CodeBuild 将生成的文件夹内容上传到 S3?
- python-3.x - 如何将尾随零添加到熊猫数据框列?
- spring-boot - mapstruct 中的自定义方法
- c++ - 为什么自动删除返回值中的引用?
- java - TreeCellRenderer 中的标签宽度不正确
- javascript - 在浏览器(vuex + axios)加载时,带有多个 JSON 文件的模拟数据似乎被覆盖
- ruby-on-rails - Rails 6.0.0 TypeError - 没有将 nil 隐式转换为字符串:
- redirect - 如何在 HAProxy 中进行内部重定向?
- python - 如何将文件从网站下载到 S3 存储桶而无需下载到本地机器