C# Oracle存储过程和自定义数据类型
我有一个Oracle存储过程,它接受两个参数:一个自定义数据类型和一个字符串 在Oracle中调用存储过程时,我将执行以下操作:C# Oracle存储过程和自定义数据类型,c#,oracle,ado.net,C#,Oracle,Ado.net,我有一个Oracle存储过程,它接受两个参数:一个自定义数据类型和一个字符串 在Oracle中调用存储过程时,我将执行以下操作: EXECUTE MY_STORED_PROCEDURE(MYTYPE_T(99, 231), 'mystring') 如何使用C#执行此操作?我知道我需要将命令设置为存储过程,但是如何将第一个参数指定为自定义数据类型 更新: MYTYPE\u T是通过 CREATE OR REPLACE TYPE mytype_t AS TABLE OF NUMBER ; 您将
EXECUTE MY_STORED_PROCEDURE(MYTYPE_T(99, 231), 'mystring')
如何使用C#执行此操作?我知道我需要将命令设置为存储过程,但是如何将第一个参数指定为自定义数据类型
更新:
MYTYPE\u T
是通过
CREATE OR REPLACE TYPE mytype_t AS TABLE OF NUMBER ;
您将无法轻松地使用 但是您可以使用UDT。如果这不是一个选项,我不确定如何通过C#with System.Data中的参数来实现 ODP有很多例子,在上面的链接中有很多例子 我将添加更多的链接,希望对您有所帮助:
param1.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
一切都应该就绪只有在数据库定义了自定义数据类型的情况下,才可以将自定义数据类型从C#传递到Oracle过程。看一看,这将帮助您开始。更新了我的问题。ODP的一个样本就好了。我似乎在ODP示例文件中找不到我需要的特定场景。
sql1
应该有什么值?它只是存储过程的名称吗?我已经用我需要传递给存储过程的确切类型更新了我的问题。@Baddie,我相信你会想使用AssociationArray,我在上面添加了一个很好的链接
/* Person Class
An instance of a Person class represents an ODP_OBJ1_SAMPLE_PERSON_TYPE object
A custom type must implement INullable and IOracleCustomType interfaces
*/
public class Person : INullable, IOracleCustomType
param1.CollectionType = OracleCollectionType.PLSQLAssociativeArray;