MINI
C:
/
app
/
Administrator
/
product
/
11.2.0
/
dbhome_1
/
oo4o
/
doc
/
Upload File:
files >> C:/app/Administrator/product/11.2.0/dbhome_1/oo4o/doc/README.HTM
<!-- saved from url=(0022)http://internet.e-mail --> <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <!-- saved from url=(0022)http://internet.e-mail --> <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"> <meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 9"> <meta name=Originator content="Microsoft Word 9"> <link rel=File-List href="./oo4o.readme_files/filelist.xml"> <link rel=Edit-Time-Data href="./oo4o.readme_files/editdata.mso"> <!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--> <title>OO4O Readme</title> <!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>Neeraj Gupta</o:Author> <o:Template>Normal</o:Template> <o:LastAuthor>Neeraj Gupta</o:LastAuthor> <o:Revision>5</o:Revision> <o:TotalTime>8</o:TotalTime> <o:Created>2006-06-28T10:53:00Z</o:Created> <o:LastSaved>2006-06-29T06:18:00Z</o:LastSaved> <o:Pages>6</o:Pages> <o:Words>1892</o:Words> <o:Characters>10789</o:Characters> <o:Company>Oracle Corporation</o:Company> <o:Lines>89</o:Lines> <o:Paragraphs>21</o:Paragraphs> <o:CharactersWithSpaces>13249</o:CharactersWithSpaces> <o:Version>9.3821</o:Version> </o:DocumentProperties> </xml><![endif]--> <style> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:blue; text-decoration:underline; text-underline:single;} p {margin-right:0in; mso-margin-top-alt:auto; mso-margin-bottom-alt:auto; margin-left:0in; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} tt {mso-ascii-font-family:"Courier New"; mso-fareast-font-family:"Courier New"; mso-hansi-font-family:"Courier New"; mso-bidi-font-family:"Courier New";} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:612518497; mso-list-type:hybrid; mso-list-template-ids:1387931402 177484366 1797416430 -549445990 -2130910950 591835552 -110879886 1261489140 -351864006 1892464488;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:\F0B7; mso-level-tab-stop:.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l1 {mso-list-id:808936695; mso-list-type:hybrid; mso-list-template-ids:641387874 -930040498 -203246324 1046891088 734528736 2113025808 -535258100 89687340 1888378372 708227080;} @list l2 {mso-list-id:972057323; mso-list-type:hybrid; mso-list-template-ids:192193280 -584143330 854381858 355098196 1102090382 392177430 -264452858 -134078522 1878670474 -339442142;} @list l2:level1 {mso-level-number-format:bullet; mso-level-text:\F0B7; mso-level-tab-stop:.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l3 {mso-list-id:1462305113; mso-list-type:hybrid; mso-list-template-ids:-1555135610 662056308 617802826 1790711384 1950356660 -1834435490 460389666 -1743629542 1719564876 347236060;} @list l3:level1 {mso-level-number-format:bullet; mso-level-text:\F0B7; mso-level-tab-stop:.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l4 {mso-list-id:1584801168; mso-list-type:hybrid; mso-list-template-ids:2141611960 1553215398 1250094270 -973581020 -1097013646 567174754 1020977602 2105991748 100461764 -1735597356;} @list l4:level1 {mso-level-number-format:bullet; mso-level-text:\F0B7; mso-level-tab-stop:.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Symbol;} ol {margin-bottom:0in;} ul {margin-bottom:0in;} --> </style> <!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="1027"/> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]--> </head> <body bgcolor=white lang=EN-US link=blue vlink=blue style='tab-interval:.5in'> <div class=Section1> <h2>Oracle Objects for OLE (OO4O) Release Notes</h2> <div class=MsoNormal align=center style='text-align:center'> <hr size=2 width="100%" align=center> </div> <p><b>The latest OO4O patches and information is located at the following site:<br> <a href="http://otn.oracle.com/tech/windows/ole/">http://otn.oracle.com/tech/windows/ole/</a></b></p> <p><b><span style='font-size:13.5pt'>Release 11.2.0.1.0 Production</span></b></p> <h4>February 2010</h4> <p><strong>Copyright (C) Oracle Corporation 2010</strong></p> <div class=MsoNormal align=center style='text-align:center'> <hr size=2 width="100%" align=center> </div> <p>This file contains important information specific to Oracle Objects for OLE. The following topics are covered: </p> <ul type=disc> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l3 level1 lfo3;tab-stops:list .5in'><a href="#Known_Issues">Known Issues</a> </li> </ul> <p><b>Install Notes:</b> Oracle Objects for OLE can be installed in Multiple Oracle Homes. However, being a COM component, only one instance can be active on the computer. This means that the current (latest) installation renders the previous one inactive. </p> <h3><a name="System_Requirements"></a><a name=Limitations></a></h3> <h3><a name="Known_Issues">Known Issues</a></h3> <ul type=disc> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l2 level1 lfo12;tab-stops:list .5in'><a href="#Oracle_In-Process_Server">Oracle In-Process Server</a> </li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l2 level1 lfo12;tab-stops:list .5in'><a href="#Oracle_Class_Libraries">Oracle Class Libraries</a> </li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l2 level1 lfo12;tab-stops:list .5in'><a href="#IIS/ASP_and_Viper_Issues">IIS/ASP</a> </li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l2 level1 lfo12;tab-stops:list .5in'><a href="#Oracle_Data_Control">Oracle Data Control</a></li> </ul> <h4><a name="Oracle_In-Process_Server"></a>Oracle In-Process Server</h4> <p><u>XML Support</u> </p> <p>Data from LONG or LONG RAW fields are not rendered. <br> Data from Object or Collection attributes of type RAW are not rendered. </p> <p><u>Automation Error when calling OraParameters.Remove for Parameters of Extended Type</u> </p> <p>Calling OraParameters.Remove on an OraParameter of type OraObject, OraRef, OraCollection, OraBlob, OraClob, or OraBfile can result in an Automation error. A workaround is to not call Remove. </p> <p><u>Access Violation When Freeing a Temporary Lob</u> </p> <p>This bug occurs when a Temporary Lob is freed either by going out of scope or when it is set to "nothing". The workaround is to make sure that the OraDatabase parent of the Lob is freed AFTER the Lob. </p> <p>Set OraClob = nothing <br> Set OraDatabase = nothing </p> <p><u>ORA-4108 When Updating Dynasets Based on Index Organized Tables</u> </p> <p>OO4O does not currently support updating Index Organized Tables using OraDynaset. Updates may be done with OraDatabase.ExecuteSQL method. </p> <p><u>OraParameter Values Return Null Variant Instead of Empty String</u> </p> <p>As a part of an earlier bug fix, OraParameter.Value will now return a variant of type Null to correspond to database Null values whereas in some previous cases it had returned an empty string (which was a bug). Now, if you set a string variable equal to OraParameter.Value and Null is returned, Visual Basic will give an error because you cannot set a string variable to Null. Use a variant instead. </p> <p><u>Methods Beginning with Prefix "Db" Removed from Documentation</u> </p> <p>Methods that begin with the prefix "Db" have been removed from the documentation (such as OraSession.DbOpenDatabase) <br> but will continue to be supported for backward compatibility. The same method without the "Db" prefix is exactly the same. </p> <p><u>ORA-12704 with NCHAR or NVARCHAR2 Data Types</u> </p> <p>NCHAR and NVARCHAR2 datatypes are not supported in this release. The error "character set mismatch" is likely if operations are attempted on these types. </p> <p><u>LOB columns with Dynaset with ORADYN_ORAMODE</u> </p> <p>Adding LOB columns in a dynaset created with ORADYN_ORAMODE option does not work with this release. </p> <p><u>Lob, Objects, REF, Collections Dirty Writes</u> </p> <p>With all other column types, when you attempt to do an update, and the value of the field has been changed by another user, you receive an OIP-4119 "Data Has been Changed" error. This error will not occur with BLOB and CLOB, Object, REF and collection types and the data will be updated regardless. </p> <p><u>ChunkSize for LONG, LONG RAW columns</u> </p> <p>The ChunkSize can be less than or equal to 65280 bytes and <b>not</b> 64K as mentioned in the documentation. This is true for all the chunking methods GetChunk, GetChunkByte, GetChunkByte, GetChunkByteEx and ReadChunk. </p> <p><u>Behavior of MoveTo, MoveRel, Movexxxxn</u> </p> <p>MoveTo: </p> <p>The behavior of this method is correct but the documentation does not make clear how this method behaves: Row numbers are static between refreshes. They are very much like a row id. Row numbers are not dynamically reassigned after deletions. Therefore, if you do a MoveFirst followed by a MoveTo 4, you will end up at the same row, whether or not rows 2 and 3 have been deleted. So, you should not do arithmetic based on values of row numbers unless you can guarantee no row has been deleted (such as immediately after a refresh). That is, you cannot be sure how far apart row 1 and row 4 are in terms of valid (non-deleted) rows. The row number simply serves as a label or id and its actual value is meaningless in terms of relative position whenever rows have been deleted. </p> <p>MoveRel, Movexxxxn </p> <p>These methods do not work correctly when rows have been deleted. They incorrectly add the offset you provide to the value of the row number and move there (or to the next available valid row if the resulting row has been deleted). Unless you can guarantee that no row has been deleted (such as immediately after a refresh) these methods should probably not be used. Instead, use a loop of MoveNext or MovePrev to achieve the same results. </p> <p><u>Find Methods</u> </p> <ul type=disc> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l0 level1 lfo15;tab-stops:list .5in'>The <i>like</i> operator will not work in multi-byte languages. </li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l0 level1 lfo15;tab-stops:list .5in'>Table or synonym 'DUAL' is required in user's schema. </li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l0 level1 lfo15;tab-stops:list .5in'>Date values are retrieved and compared in VB format, which is actually the format specified in the Control Panel. Therefore, date comparisons will fail if any other format such as the default Oracle format 'DD-MON-YYYY' is used. </li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l0 level1 lfo15;tab-stops:list .5in'>SQL function TO_CHAR(date, fmt) cannot be used because the first argument must be a date in native Oracle format and OO4O only handles 'string dates'. </li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l0 level1 lfo15;tab-stops:list .5in'>SQL function TO_DATE will convert a string to a date, but the OIP will convert it back to a string in VB format as described above and the comparison may still fail. </li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l0 level1 lfo15;tab-stops:list .5in'>FindPrevious and FindLast in a NO_CACHE dynaset will not work: NoMatch will be set TRUE.</li> </ul> <p> </p> <h4><a name="Oracle_Class_Libraries"></a>Oracle Class Libraries</h4> <p>Additional corrections: </p> <p><u>Access Violation on Program Termination, after OShutdown()</u> </p> <p>If OShutdown() is called and then a program exits, any OO4O objects that are on the stack will be deleted by the compiler generated cleanup code. When OO4O objects are deleted, Release() is called on the associated OIP COM object. If COM is already shutdown, this can result in an access violation. So, in these cases, the user should either call Close() on each object on the stack prior to calling OShutdown() (or Clear() in the case of an OValue that contains an object), or since the program is terminating anyway, neglect calling OShutdown() at all. Note that it is not required to call Close() on OO4O objects, this is taken care of automatically when they are deleted. In this special case, however, it is neccesary to make sure the Close() happens before the OShutdown. </p> <p>Example: </p> <p>main() <br> { <br> OSession sess; <br> ODatabase db; <br> OValue val; <br> OStartup(); <br> db.Open(sess, "exampledb", "scott", "tiger", 0); <br> sess.Close(); <br> db.Close(); <br> oval.Clear(); //only needed if OValue can contain an object <br> OShutdown(); <br> } </p> <p><u>Additional support for RAW datatype</u> </p> <p>Additional methods were added to the C++ library to enable support for the RAW datatype: </p> <p>ODynaset: <br> oresult GetFieldValue(int index, char *val, unsigned short maxlen, <b>unsigned short *outlen</b>) const; <br> oresult GetFieldValue(const char *fieldname, char *val, unsigned short maxlen, <b>unsigned short *outlen</b>) const; <br> oresult SetFieldValue(int index, const char *val, <b>int len</b>); <br> oresult SetFieldValue(const char *fieldname, const char *val, <b>int len</b>); </p> <p>OField: <br> oresult GetValue(const char **val, <b>int *len</b>) const; <br> oresult SetValue(const char *val, <b>int len</b>); </p> <p>OParamArray: <br> oresult GetValue(const char **val, <b>int *len</b>, int index) const; <br> oresult SetValue(const char *val, <b>int len</b>, int index); </p> <p>OParameter: <br> oresult GetValue(const char **val, <b>int *len</b>) const; <br> oresult SetValue(const char *val, <b>int len</b>); </p> <p>OParameterCollection: <br> OParameter Add(const char *name, const char *value, <b>int len</b>, int iotype, int serverType); </p> <p>Example code is provided in the <tt><span style='font-size:10.0pt; font-family:Arial'>\ORACLE_HOME\OO4O\CPP\WORKBOOK\RAW directory.</span></tt> <br> </p> <p><u>OStartup with ApartmentThreaded (default) option</u> </p> <p>When calling OStartup from C++ Class library <b>without </b>the OSTARTUP_MULTITHREADED option, <br> connections with same username, password, and connect alias are shared. This is to insure backward compatibility with version 2.3 and before. </p> <p><a name="Using_the_data_control_with_VC++"></a><u>Using the data control with VC++ </u></p> <p>An error condition will cause an exception in MFC42.DLL. For example while running a VC++ application with the data control, an invalid data input, which should otherwise generate an OIP error, will cause an unhandled exception in MFC42.DLL. </p> <h4><a name="IIS/ASP_and_Viper_Issues"></a>IIS/ASP</h4> <p><u>IIS</u></p> <p>In IIS you need to use the <i><OBJECT></i> tag for instantiating OO4O. </p> <p><span style='font-size:10.0pt;font-family:Arial'><OBJECT RUNAT=Server SCOPE=Application ID=OraSession PROGID="OracleInProcServer.XOraSession"></OBJECT></span> </p> <p>You can then access the OraSession object by simply referring to it without using the Application("OraSession") syntax. The SCOPE=Application takes care of it. </p> <p>The following is a sample global.asa file. </p> <p><span style='font-size:10.0pt;font-family:Arial'><OBJECT RUNAT=Server SCOPE=Application ID=OraSession PROGID="OracleInProcServer.XOraSession"></OBJECT></span> <br> <span style='font-size:10.0pt;font-family:Arial'><SCRIPT LANGUAGE=VBScript RUNAT=Server></span> <br> <span style='font-size:10.0pt;font-family:Arial'>Sub Application_OnStart</span> <br> <span style='font-size:10.0pt;font-family:Arial'>End Sub</span> </p> <p><span style='font-size:10.0pt;font-family:Arial'>Sub Application_OnEnd</span> <br> <span style='font-size:10.0pt;font-family:Arial'>End Sub</span> </p> <p><span style='font-size:10.0pt;font-family:Arial'></SCRIPT></span> </p> <p><u>Reading Long/Long raw columns in ASP</u> </p> <p>You have to use OraField object's method GetChunkByteEx to read Long/Long raw columns from ASP. See the help for more information. Oracle recommends that you use LOBs instead. </p> <h4><a name="Oracle_Data_Control">Oracle Data Control</a></h4> <p>There may be data display issues when multiple edit controls are bound to the Oracle Data Control. As a workaround, please use Rich text control instead.</p> <p> </p> <p><![if !supportEmptyParas]> <![endif]><o:p></o:p></p> </div> </body> </html>
Copyright ©2021 || Defacer Indonesia