(यह आज की मेरी अन्य पोस्ट में से एक है) यह आरंभ करने पर एक पूर्वाभ्यास है:http://www.oracle.com/technology/obe/hol08/dotnet/udt/udt_otn.htm
जबकि यह थोड़ा अधिक विस्तृत है:http://download.oracle.com /docs/html/E10927_01/featUDTs.htm
लेकिन वास्तविक मांस और आलू आपके कंप्यूटर पर नमूने निर्देशिका में ODP स्थापित करने के बाद पहले से ही स्थापित हैं:%ORA_HOME%\product\11.1.0\client_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 ;
.नेट साइड इंसिन्च प्राप्त करने के लिए उपरोक्त लिंक में दिए गए निर्देशों का पालन करें
अब एक संग्रह के लिए:
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 जैसे पर रिटर्निंग क्लॉज का उपयोग कर सकते हैं
create table testTable (colA varchar2(50) , colB number(10) );
CREATE SEQUENCE TESTSEQ START WITH 1 NOCACHE;
DECLARE
lTestTypeTable TestTypeTable ;
BEGIN
UPDATE TESTTABLE
SET
COLA = '1' ,
COLB = 'a'
WHERE COLA IS NULL
RETURNING TESTTYPE(COLA,COLB) --NOTE IF YOU HAVE ONE ROW YOU MAY DROP THE BULK COLLECT AND PUT IT INTO THE SINGLE ROW TYPE
BULK COLLECT INTO
lTestTypeTable
;
END ;
/
DECLARE
lTestType TestType;
BEGIN
INSERT INTO TESTTABLE(COLA, COLB)
VALUES ('BBB' , testSeq.NEXTVAL )
RETURNING TESTTYPE(COLA,COLB)
INTO
lTestType
;
DBMS_OUTPUT.PUT_LINE('MY NEW SEQUENCE # IS SET TO ' || lTestType.COLB) ;
END ;
/
दुर्भाग्य से ऐसा लगता है कि आप ऐसा नहीं कर सकते हैं
insert into TT ... SELECT * from .. RETURNING Type(x,y) BULK COLLECT INTO lVariable;
इसलिए इस साइट से रटने के बजाय, यह एक "काम-आसपास" के बारे में बताता है कि एक सम्मिलित विवरण में काम करने के लिए थोक संग्रह प्राप्त करेंhttp://www.oracle-developer.net/display.php?id=413