Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.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
C# Oracle存储过程和自定义数据类型_C#_Oracle_Ado.net - Fatal编程技术网

C# 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 ; 您将

我有一个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 ; 

您将无法轻松地使用 但是您可以使用UDT。如果这不是一个选项,我不确定如何通过C#with System.Data中的参数来实现

ODP有很多例子,在上面的链接中有很多例子

我将添加更多的链接,希望对您有所帮助:

  • (做 请注意,这是中途, 他们用这个工具走过去 在中创建其上方的自定义类型 示例--本演练是 非常彻底,应该会让你 直接在您需要的地方)
  • 当前位置这家伙也 安装示例文件,这是 这是另一个非常好的例子 您需要执行的操作:一旦安装 goto[目录路径]选择您要的路径 安装]..\product\11.2.0\client\u 1\odp.net\samples\4\UDT\object1.cs
  • 允许VisualStudio的ODT工具为您的UDT创建类(例如IOracleCustomType等)是值得的。然后,您可以深入研究它们并修改它们以满足您的需要。然后,一旦一切都说了算(object1.cs中的片段):

    还请注意,Person类必须实现IOracleCustomType(可以按照#2中的链接创建)

    以上内容适用于完全自定义类型,但您需要关联数组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;