Sql server 将UDT参数数组传递给ODP.NET中的Oracle存储过程

Sql server 将UDT参数数组传递给ODP.NET中的Oracle存储过程,sql-server,oracle,procedure,odp.net,Sql Server,Oracle,Procedure,Odp.net,我们需要向oracle存储过程发送数据,该存储过程需要ITEM\u data对象数组。其中有另一个数组,如下所示 CREATE OR REPLACE TYPE ITEM_DATA AS OBJECT ( ITEM_CODE VARCHAR2 (50), serial array_serial, notes VARCHAR2 (1000) ); CREATE OR REPLACE TYPE array_serial AS TABLE OF VARCHAR(20) CREATE OR REPLA

我们需要向oracle存储过程发送数据,该存储过程需要
ITEM\u data
对象数组。其中有另一个数组,如下所示

CREATE OR REPLACE TYPE ITEM_DATA AS OBJECT
(
ITEM_CODE VARCHAR2 (50),
serial array_serial,
notes VARCHAR2 (1000)
);

CREATE OR REPLACE TYPE array_serial AS TABLE OF VARCHAR(20)

CREATE OR REPLACE TYPE obj_good_array AS VARRAY(500) OF ITEM_DATA;

我想实现自定义数据类型类。

安装Oracle Developer Tools for Visual Studio,使用ODP.NET连接到服务器资源管理器,导航到“用户定义的类型”节点,然后查找您的类型,然后运行自定义类向导生成一个类,您可以使用该类将数据传递到存储过程中

以下是一个可以帮助您的演练:


如果您担心性能,请改用关联数组,并放弃UDT。

Hi Christian,谢谢您的回复和链接。是否有任何方法通过SQL Server链接服务器传递此数据。?实际上,我需要通过链接服务器将数据从SQL server传递到Oracle。谢谢。我不太清楚链接服务器是用什么调用Oracle的,也不知道支持什么数据类型。您添加了ODP.NET标记,这就是我第一次看到您的问题的原因。它使用ADO.NET吗?如果是这样,你仍然可以使用我的解决方案。如果链接服务器使用ODBC设置对Oracle的调用,那么ODBC不支持UDT。如果链接服务器无法支持它,那么在这种情况下,您可能需要在Oracle中创建一个包装器存储过程,该过程使用支持的数据类型获取值,然后返回并调用原始SP。