在pl/sql中将oracle查询转换为用户定义的类型
我在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,一次处理一行在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
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数据获取到集合中(这会节省我一些时间!)