Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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
在pl/sql中将oracle查询转换为用户定义的类型_Oracle_Plsql_Odp.net - Fatal编程技术网

在pl/sql中将oracle查询转换为用户定义的类型

在pl/sql中将oracle查询转换为用户定义的类型,oracle,plsql,odp.net,Oracle,Plsql,Odp.net,我在plsql过程中对关系表进行了select查询 我想将此查询的结果转换为用户定义的类型对象,以便通过odp.net返回 我该怎么做呢?(这是我今天另一篇文章中的一篇) 这是关于入门的演练: 虽然这更详细一些: 但是,在您将ODP安装到Samples目录:%ORA\u HOME%\product\11.1.0\client\u 1\ODP.net\Samples\2.x\UDT后,您的计算机上已经安装了真正的肉类和土豆 但是pl/sql方面: 首先创建单例udt,一次处理一行 CREATE

我在plsql过程中对关系表进行了select查询

我想将此查询的结果转换为用户定义的类型对象,以便通过odp.net返回

我该怎么做呢?

(这是我今天另一篇文章中的一篇) 这是关于入门的演练:

虽然这更详细一些:

但是,在您将ODP安装到Samples目录:%ORA\u HOME%\product\11.1.0\client\u 1\ODP.net\Samples\2.x\UDT后,您的计算机上已经安装了真正的肉类和土豆

但是pl/sql方面:

首先创建单例udt,一次处理一行

 CREATE TYPE TESTTYPE IS OBJECT(COLA VARCHAR2(50) , COLB NUMBER(10) );
 create or replace procedure GetTestType(lTestType OUT NOCOPY TESTTYPE)
 IS
  BEGIN
     SELECT TESTTYPE('ValA',123) 
       INTO LTESTTYPE
       FROM DUAL ;
  END GetTestType ;
按照上面链接中的说明获取.net端InSync

现在来看一个系列:

CREATE TYPE TESTTYPETABLE IS TABLE OF TESTTYPE ;

CREATE OR REPLACE PROCEDURE GETTESTTYPETABLE(lTestTypeTable OUT NOCOPY TestTypeTable)
 IS
  BEGIN
     SELECT TESTTYPE(COLA,COLB)
               bulk collect INTO lTestTypeTable
         FROM (
             SELECT 'ValA' COLA ,123 COLB
               FROM DUAL
               UNION
             SELECT 'ValB' COLA ,234 COLB
               FROM DUAL
               UNION
             SELECT 'Valc' COLA ,456 COLB
               FROM DUAL
         ) ;

END GETTESTTYPETABLe;
然后在.net方面,这实际上是TESTTYPE()的值

现在,为了节省时间,可以在INSERT/UPDATE/DELETES上使用RETURNING子句 因此

不幸的是,你似乎不能做一件事

insert into TT ... SELECT * from .. RETURNING Type(x,y) BULK COLLECT INTO lVariable;
因此,它不是死记硬背地应付这个站点,而是讲述了一种“变通方法”,以使批量收集在INSERT语句中工作 (这是我今天的另一篇文章) 这是关于入门的演练:

虽然这更详细一些:

但是,在您将ODP安装到Samples目录:%ORA\u HOME%\product\11.1.0\client\u 1\ODP.net\Samples\2.x\UDT后,您的计算机上已经安装了真正的肉类和土豆

但是pl/sql方面:

首先创建单例udt,一次处理一行

 CREATE TYPE TESTTYPE IS OBJECT(COLA VARCHAR2(50) , COLB NUMBER(10) );
 create or replace procedure GetTestType(lTestType OUT NOCOPY TESTTYPE)
 IS
  BEGIN
     SELECT TESTTYPE('ValA',123) 
       INTO LTESTTYPE
       FROM DUAL ;
  END GetTestType ;
按照上面链接中的说明获取.net端InSync

现在来看一个系列:

CREATE TYPE TESTTYPETABLE IS TABLE OF TESTTYPE ;

CREATE OR REPLACE PROCEDURE GETTESTTYPETABLE(lTestTypeTable OUT NOCOPY TestTypeTable)
 IS
  BEGIN
     SELECT TESTTYPE(COLA,COLB)
               bulk collect INTO lTestTypeTable
         FROM (
             SELECT 'ValA' COLA ,123 COLB
               FROM DUAL
               UNION
             SELECT 'ValB' COLA ,234 COLB
               FROM DUAL
               UNION
             SELECT 'Valc' COLA ,456 COLB
               FROM DUAL
         ) ;

END GETTESTTYPETABLe;
然后在.net方面,这实际上是TESTTYPE()的值

现在,为了节省时间,可以在INSERT/UPDATE/DELETES上使用RETURNING子句 因此

不幸的是,你似乎不能做一件事

insert into TT ... SELECT * from .. RETURNING Type(x,y) BULK COLLECT INTO lVariable;
因此,它不是死记硬背地应付这个站点,而是讲述了一种“变通方法”,以使批量收集在INSERT语句中工作

非常感谢。这是我正在寻找的东西的PL/SQL方面。我的另一个问题还不够清楚,所以我也会在那里做标记。np,我添加了一些额外的实现细节,可以从update/inserts/etc将SQL数据获取到集合中(这会节省我一些时间!),非常感谢。这是我正在寻找的东西的PL/SQL方面。我的另一个问题还不够清楚,所以我也会在那里加上标记。np,我添加了一些额外的实现细节,可以从update/inserts/etc将SQL数据获取到集合中(这会节省我一些时间!)