Why is there no Oracle base type?

I would like to know why ODP.NET Oracle types such as OracleDecimal, OracleString, OracleBlob, etc have no common base type or interface. There are some methods and properties that more than obviously are suited to being in such an interface (or base class). Specifically for me these are "bool IsNull { get; }" and "public string Value { get; }". Why should I even have to know the Oracle type when I get the .NET type from it?

Sorry, skj, I didn't see your post until now. For some reason, I only got a notification after Eric's post.
Yes, I am talking about out parameters. If you read out these and want to test for null, testing equality with DBNull.Value doesn't work. You have to cast to the Oracle type in question, e.g. OracleDecimal, and use the IsNull property defined there.
I wrote the following null checking method using reflection, but I don't think this is a very elegant way to solve the problem:
public static bool IsNull(object o)
     if (o == null || o == DBNull.Value)
          return true;
     PropertyInfo propertyInfo = o.GetType().GetProperty("IsNull");
     if (propertyInfo == null)
          return false;
     MethodInfo methodInfo = propertyInfo.GetGetMethod();
     return (bool)methodInfo.Invoke(o, null);
}

Similar Messages

  • Why theres no proper Basis area on the Wiki?

    I was wondering why theres no proper Basis/Technical area on the wiki?
    Regards
    Juan

    I think theres plenty of demand for a basis area on the wiki.
    How can i request a "Basis corner" on the wiki?...  how can i campain?? maybe someone can creare a stick post on the SAP Netweaver Administrator area to gather votes.
    Im also interested in becoming a moderator for the SAP Netweaver area, whats the best approach? who is the right person to contact?
    Juan

  • Why is there a red circle with a "1" next to my base station name?

    why is there a red circle with a "1" next to my base station name?

    Could mean a software update is avaiable.  Did you click on it and see what it says?

  • I am a  Creative Cloud subscriber  [limited to photoshop/ lightroom/ bridge] . I keep getting messages to manage my account on pain of being cut off. Why? There doesn't seem anything to manage -payments are being made  through visa on monthly basis.

    I am a  Creative Cloud subscriber  [limited to photoshop/ lightroom/ bridge] . I keep getting messages to manage my account on pain of being cut off. Why? There doesn't seem anything to manage -payments are being made  through visa on monthly basis.

    Online Chat Now button near the bottom for Activation and Deactivation problems may help
    http://helpx.adobe.com/x-productkb/policy-pricing/activation-deactivation-products.html

  • Restricting Base type of Ref?

    This problem may appear to you as cryptical as the Title, sorry for that.
    Local elements may be implemented as references to global elements, in which case a registerSchema will use one and the same table. Take for example the next schema
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" elementFormDefault="qualified" attributeFormDefault="unqualified">
         <xs:element name="Object" type="AnyType" xdb:defaultTable="OBJECTS"/>
         <xs:element name="Class" type="xs:string"/>
         <xs:complexType name="AnyType" xdb:SQLType="ANY_T">
              <xs:sequence>
                   <xs:element ref="Class"/>
              </xs:sequence>
         </xs:complexType>
         <xs:complexType name="SomeType" xdb:SQLType="SOME_T">
              <xs:complexContent>
                   <xs:extension base="AnyType"/>
              </xs:complexContent>
         </xs:complexType>
         <xs:complexType name="Reference" xdb:SQLType="REF_T">
              <xs:complexContent>
                   <xs:extension base="AnyType">
                        <xs:sequence>
                             <xs:element ref="Object"/>
                        </xs:sequence>
                   </xs:extension>
              </xs:complexContent>
         </xs:complexType>
    </xs:schema>
    In this example both
    <?xml version="1.0" encoding="UTF-8"?>
    <Object ... xsi:type="SomeType">
    <Class>C1</Class>
    </Object>
    and
    <?xml version="1.0" encoding="UTF-8"?>
    <Object ... xsi:type="Reference">
         <Class>C2</Class>
         <Object>
              <Class>C1</Class>
         </Object>
    </Object>
    are valid documents following this schema.
    The question:
    Is it possible to define that the "ref" should be of some derived type of "AnyType", so in above example, is it possible to define that inside "Reference" the Object's type should be restricted to "BaseType", without having to define a local element?
    If not, is this to be considered a shortcoming of XML Schema or is this an undesirable construction?

    Can anybody explain the reasons why the base type of many predefined java classes such as ArrayList<E> has to be a class type and cannot be a primitive type
    That '<E>' represents a 'reference' to the object type of the collection.
    Primitives are NOT references (reference types) so, by definition, they can 'refer' to an object type so can NOT be a 'base.
    1. Primitives are not objects
    2. They do not have methods
    3. They can not be extended
    Generic syntax like '<T extends Number>' would be impossible using primitives since primitives are not objects and can't be extended.
    See the extended presentation of Primitives and References in The Java Language Specification
    https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.1
    4.1. The Kinds of Types and Values
    There are two kinds of types in the Java programming language: primitive types (§4.2) and reference types (§4.3). There are, correspondingly, two kinds of data values that can be stored in variables, passed as arguments, returned by methods, and operated on: primitive values (§4.2) and reference values (§4.3).
    Type:
        PrimitiveType
        ReferenceType

  • How to return Values from Oracle Object Type to Java Class Object

    Hello,
    i have created an Oracle Object Types in the Database. Then i created Java classes with "jpub" of these types. Here is an example of the type.
    CREATE OR REPLACE TYPE person_type AS OBJECT
    ID NUMBER,
    vorname VARCHAR2(30),
    nachname VARCHAR2(30),
    geburtstag DATE,
    CONSTRUCTOR FUNCTION person_type RETURN SELF AS RESULT,
    CONSTRUCTOR FUNCTION person_type(p_id NUMBER) RETURN SELF AS RESULT,
    CONSTRUCTOR FUNCTION person_type(p_vorname VARCHAR2,
    p_nachname VARCHAR2,
    p_geburtstag DATE) RETURN SELF AS RESULT,
    MEMBER FUNCTION object_exists(p_id NUMBER) RETURN BOOLEAN,
    MEMBER PROCEDURE load_object(p_id NUMBER),
    MEMBER PROCEDURE save_object,
    MEMBER PROCEDURE insert_object,
    MEMBER PROCEDURE update_object,
    MEMBER PROCEDURE delete_object
    MEMBER PROCEDURE load_object(p_id NUMBER) IS
    BEGIN
    SELECT p.id, p.vorname, p.nachname, p.geburtstag
    INTO SELF.ID, SELF.vorname, self.nachname, SELF.geburtstag
    FROM person p
    WHERE p.id = p_id;
    END;
    My problem is, that if i use the member function "load_object" from my java app it doesnt return the selected values to the java class and i dont know why. I use the java class like this:
    PersonObjectType p = new PersonObjectType();
    p.load_object(4);
    There is a reocrd in the database with id = 4 and the function will execute successful. But if i try to use "p.getVorname()" i always get "NULL". Can someone tell me how to do that?
    Thanks a lot.
    Edited by: NTbc on 13.07.2010 15:36
    Edited by: NTbc on 13.07.2010 15:36

    CallableStatement =
    "DECLARE
    a person_type;
    BEGIN
    a.load_object(4);
    ? := a;
    END;"
    And register as an out parameter.
    Edited by: michael76 on 14.07.2010 05:01

  • Working with oracle object type tables

    Hi,
    I've created a table which only contains Oracle object types (e.g. CREATE TABLE x OF <...>). When I create an Entity for this table using the Entity wizard, I end up with an entity with the attributes of the base object type and two special attributes REF$ (reference to the object type instance) and SYS_NC_OID$ (unique object identifier). The REF$ attribute is on the Java side of type oracle.jbo.domain.Ref and the other attribute is on the Java side a simple String.
    It seems this only allows me to save objects of the base type in this table. First of all in my situation this is also impossible because the base type is not instantiable. What I do want is to save several different subtypes into this table using the BC4J custom domain mechanism. Is there any way to make this possible? I first thought I could maybe do something with the special REF$ attribute, but this doesn't seem te case. So I might need to override most of the EntityImpl methods, like doUML, remove etc. Am I right? And does anyone have any hints on how to do this?
    Regards,
    Peter

    Peter:
    Hi,
    I've created a table which only contains Oracle
    object types (e.g. CREATE TABLE x OF <...>).
    When I create an Entity for this table using the
    Entity wizard, I end up with an entity with the
    attributes of the base object type and two special
    attributes REF$ (reference to the object type
    instance) and SYS_NC_OID$ (unique object identifier).
    The REF$ attribute is on the Java side of type
    oracle.jbo.domain.Ref and the other attribute is on
    the Java side a simple String.
    It seems this only allows me to save objects of the
    base type in this table. First of all in my situation
    this is also impossible because the base type is not
    instantiable. What I do want is to save several
    different subtypes into this table using the BC4J
    custom domain mechanism. Is there any way to make
    this possible? Sorry, but this is not supported out of the box.
    Since you have an object table, you wouldn't use domains to achieve this. Instead, you would have a superclass and subclass entity objects, e.g., PersonEO subclassed into StudentEO and EmployeeEO.
    I first thought I could maybe do
    something with the special REF$ attribute, but this
    doesn't seem te case. So I might need to override
    most of the EntityImpl methods, like doUML, remove
    etc. Am I right? And does anyone have any hints on
    how to do this?
    If you want, you can try this by overridding EntityImpl's:
       protected StringBuffer buildDMLStatement(int operation,
          AttributeDefImpl[] allAttrs,
          AttributeDefImpl[] retCols,
          AttributeDefImpl[] retKeys,
          boolean batchMode)
    and
       protected int bindDMLStatement(int operation,
          PreparedStatement stmt,
          AttributeDefImpl[] allAttrs,
          AttributeDefImpl[] retCols,
          AttributeDefImpl[] retKeys,
          HashMap retrList,
          boolean batchMode) throws SQLException
    Handle the case when operation == DML_INSERT.
    There, build an insert statement with substitutable row, e.g.:
    INSERT INTO persons VALUES (person_t('Bob', 1234));
    INSERT INTO persons VALUES (employee_t('Joe', 32456, 12, 100000));
    where person_t and employee_t are database types and you are invoking the respective constructor.
    Thanks.
    Sung

  • Domains for Oracle object types

    When I create a domain for a certain Oracle object type there is no way to create some kind of inheritance tree (and there is no discriminator support it seems). On the database level I have several object types that extend a certain base object type. I want to do the same at the BC4J level. But unfortunately this doesn't seem possible. Is there a work-around for it? I don't mind to write a little extra code, any hints or help are appreciated.
    Regards,
    Peter
    P.S.
    It seems the object type / domain support in JDeveloper 9.0.3(.1) isn't quite up there with entities and view objects. It's not even possible to change an attribute name at the Java side using the domain dialog (it's only possible by manually editing the XML and Java files). Will JDeveloper 9.0.4 have broader support for object types / domains?

    I've found a way to implement the inheritance myself, at least a start. I've noticed all custom domains for oracle object types have the static method "getCustomerDatumFactory". In this method (in the base domain class) normally an instance of the base type is returned. I've modified this method so that it returns instances of the different subtypes depending on the value of a certain column. To make this work I first have to edit the Java files of the subtypes and let them extend the base type instead of the Struct class. The factory method looks like this:
    public static CustomDatumFactory getCustomDatumFactory()
        if (fac == null)
          class facClass implements CustomDatumFactory
            public CustomDatum create(Datum d, int sql_type_code) throws SQLException
              if (d != null)
                BaseType b = new BaseType(d);
                if ("subtype1".equals(b.getType())) b = new SubType1(d);
                else if ("subtype2".equals(p.getType())) b = new SubType2(d);
                else System.err.println("Unknown subtype: " + b.getType());
                return b;
              return null;
          fac = new facClass();
        return fac;
      }I also tried to save several of the subtypes in the database in the attribute field (which is of the base type) using setAttribute, this seems to work out-of-the-box. It seems for now I only get this to work if the object type is saved in a column of a certain table, I can't get it to work (yet) for object type tables (see the other recent topic of mine).
    Is this the correct way to implement what I want? Or is there a better way?
    Regards,
    Peter

  • Why are there so many more choices on the USA iTunes Store? Surely having an iTunes account should let you access all itunes availability the world over? Also how do you request films/tv series to the UK itunes?

    Why are there so many more choices on the USA iTunes Store? Surely having an iTunes account should let you access all itunes availability the world over?
    Also how do you request films/tv series to the UK itunes? There's tv series I'd like but they're incomplete like The Batman &amp; Xena Warrior Princess. And films theta aren't available for download but you can purchase in a store like HMV?  Apple isn't doing itself any favours by secluding countries by their store. They'd make billions if you could just select the iTunes Store you want to search &amp; purchase from just by signing in! If anything what they're doing is putting themselves into a corner, other companies like Samsung &amp; HTC are already on too of them for innovation &amp; ease of use. The people they're attracting are predominantly existing Apple users not new customers. What do you guys think?

    It's not Apple's choice, they can only sell a particular item where the content provider/rights-holder has granted them a license to sell them. Content is licensed by the rights-holders to Apple on a country-by-country basis, each country therefore has to have its own store, and you have to be in a country to use its store - they want control over where their content is available.
    You can try requesting that an item be added to the UK store via this page, but unless the rights-holder agrees to then Apple won't be able to sell it here : http://www.apple.com/feedback/itunes.html

  • Accessing oracle data types of a different schema

    I am having trouble accessing the Oracle data types in a stored procedure. The owner of the stored procedures and the oracle data types is "ODSCUST". I am trying to access this using "CUSTOM" ID from my java program. Recently our DBAs have made a change in schema owners so the ID loging into the Oracle instance is not the owner of the data types or the stored procedures. The "CUSTOM" user has the grants to access all the types and stored procedures. There are also public synonymns created for the oracle data types and stored procedure.
    Here is a snipit of the code:
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    String user="custom";
    String password="test";
    String database="sbpair11";
    Connection conn = DriverManager.getConnection
    ("jdbc:oracle:oci:@" + database, user, password);
    OracleCallableStatement stmt = (OracleCallableStatement)conn.prepareCall( "begin ods_cust.retrieveCustPrflData(?, ?, ?, ?, ?, ?, ?); end;" );
    stmt.setString( 1, "5592556485");
    stmt.registerOutParameter( 2, OracleTypes.STRUCT, "KSCOPEACCOUNT" );
    stmt.registerOutParameter( 3, OracleTypes.ARRAY, "KSCOPERSUUSOCARRAY" );
    stmt.registerOutParameter( 4, OracleTypes.ARRAY, "KSCOPECUTADDRARRAY" );
    stmt.registerOutParameter( 5, OracleTypes.STRUCT, "KSCOPECONTACT" );
    stmt.registerOutParameter( 6, OracleTypes.STRUCT, "KSCOPEPROFILE" );
    stmt.registerOutParameter( 7, OracleTypes.ARRAY, "KSCOPEEMAILARRAY" );
    stmt.executeUpdate();
    Here is the response I get back when I run the program:
    Exception in thread "main" java.sql.SQLException: ORA-04043: object "CUSTOM"."KSCOPEACCOUNT" does not exist
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    at oracle.jdbc.oci8.OCIDBAccess.check_error(OCIDBAccess.java:2321)
    at oracle.jdbc.oci8.OCIDBAccess.getOracleTypeADT(OCIDBAccess.java:2516)
    at oracle.jdbc.oracore.OracleTypeADT.initMetadata(OracleTypeADT.java:460)
    at oracle.jdbc.oracore.OracleTypeADT.init(OracleTypeADT.java:407)
    at oracle.sql.StructDescriptor.initPickler(StructDescriptor.java:249)
    at oracle.sql.StructDescriptor.<init>(StructDescriptor.java:204)
    at oracle.sql.StructDescriptor.createDescriptor(StructDescriptor.java:138)
    at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:164)
    at Array5.main(Array5.java:40)
    Note:
    When I do a "desc KSCOPEACCOUNT" or "desc CUSTOM.KSCOPEACCOUNT" in sqlplus as the "CUSTOM" id it works but not from Java. Initially I was using the JDBC thin driver but was recomended to switch to OCI which still didn't resolve this issue.

    Way too little info here for a definite conclusion.
    Some thoughts:
    1.) Did you take down the database when you were moving the datafiles? If so, is this the first time the batch job is running since the move? If so, perhaps the cache is cold?
    2.) How much physical I/O is the batch job doing? Has the volume of physical I/O changed significantly after the move? What are the characteristics of the lun on which the newly mounted filesystem is built? Is it a smaller number of spindles than before?
    Ultimately, you need to profile the batch process, and determine where the most time is being consumed.
    -Mark

  • Why is there no scaling for high resolution monitors in Adobe Bridge CC?

    Why is there no scaling for high resolution monitors in Adobe Bridge CC?
    Photoshop CC, Illustrator CC and Indesign CC have 200% scaling for high resolution monitors in their preferences panel but Bridge CC does not, when will this feature be added to Bridge CC Adobe???

    qsea wrote:
    Why is there no scaling for high resolution monitors in Adobe Bridge CC?
    Photoshop CC, Illustrator CC and Indesign CC have 200% scaling…
    Inconsistency between or among applications in the artificial "suites" should come as no surprise.
    The "suite" concept is a fabrication of Adobe marketing and bean-counting types.  The engineering teams are totally independent of each other, they are not only in different buildings but in different cities and states of the American Union, even in different countries.
    The fact that they have little if any communication among them is highlighted by requests occasionally made in these forums by top Adobe engineers to let the other teams know when there are problems in one application that impact our workflow in another one.

  • How do you make imessage work? The icon is there. You can type in the recipient but are not allowed to hit the send button

    How do you make imessage work? We upgraded to verision5. The icon is there. You can type the message but the send button is not available.

    There is some instability in  iMessage.  It is a versatile and confusing app even though there are so few options in its use. 
    I had issues trying to get iMessage work on both my iPads and my iPhone. 
    ON the iPhone, turning off WiFi service and then trying iMessage fixed the problem.
    On the iPad 2, same thing.  Turning off WiFi service fixed it.
    On the iPad 1, I took a suggestion from zoomzoom and changed the WiFi network configuration on the iPad to use 8.8.8.8 as a DNS server and then use iMessage.  That fixed it.   Now I put the DNS back to default and it still works.
    I suspect the iPod Touch will have the same fix as the iPad.
    If you have a WiFi and 3G iPad or iPhone, try turing off WiFi and see if that fixes it. 
    Why?  (beware, some of this is guesswork)
    iMessage can talk SMS to cellphones and smartphones (that are using the cell-network).  It can also talk Apple iMessage format to iPhones and iPads whether they are on cell-network or on WiFi.  If you are talking to an SMS cellphone, iMessage figures that out and blindly sends your message.  If you are talking to a iOS5 device, iMessage figures that out too, checks to see that they are on-line, and then does something different if they are or are not on-line.  If you type in an email address, and not a phone number, I think iMessage attempts to see if the email address is registered with Apple (or iCloud or whatever) and if it is not, it does something to let you know, possibly by making the Send button not light up. 
    In order to register iMessage and an email, you have to let the iOS device see whatever service it is that iMessage uses.  That is where the problem happenes.  zoomzoom suggested manually setting the WiFi DNS to google's 8.8.8.8 IP address, then run IMessage, and that seemed to fix the problem.  Setting the iOS device to use 3G-only (by turning off WiFi) also fixed the problem.  I suspect going down to StarBucks or McDonalds and using their WiFi would also fix the problem.  Once the problem is fixed, it doesn't seem to come back so I can't test these 'fixes'. 
    To change the DNS on your iPad find your WiFi networks configuration, click on the blue arrow, touch DNS, backspace over the number that is shown, type in 8.8.8.8    Then click on the WiFiNetworks button at the top of the screen.  Now go run iMessage.  After that, you can delete the DNS entry again and leave it blank.  Your iPad will fill it in from the WiFi router when it needs it.

  • Oracle Base in wrong place

    hello,
    As part of an upgrade to 11.2.02, I installed the binaries into a new home etc, and then upgraded the database. All appears to be working fine, BUT I made an error with the location of the Oracle Base during the install. Is it possible for me to move this, (and if so would some kind soul point me at the relevant documentation) or will i have to uninstall/re-install the binaries ?
    Many thanks,
    A

    hi
    I've never heard about moving oracle homes/bases.
    Why bother with it if it works?
    Rather you can install 11.2.0.2 in another good location and them move database (e.g. with expdp/impdp or RMAN).
    I think you cannot easly reinstall to the old 11.2.0.1 home , only with downgrade option which by the way can make problems.

  • Why is there no "none" option of payment methods? , Can not modify About Me!

    Why is there no "none" option of payment methods? , Can not modify About Me!

    How to Get Apps From the App Store Without a Credit Card
    http://ipadhelp.com/ipad-help/how-to-get-free-apps-from-the-app-store-without-a- credit-card/
    Creating an iTunes Store, App Store, iBookstore, and Mac App Store account without a credit card
    http://support.apple.com/kb/ht2534
    If None is not available - On your computer launch iTunes and click "iTunes Store" in the left navigation pane. Click the "down arrow" next to your name at the top right side of the page and click "Account." Enter your username and password and click "View Account" to log into your account information. Next to your Payment Type, click "Edit." Select the "None" button and click "Done." Confirm that your card has been removed by returning to the Apple account information screen. Under Payment Type, it should say that there is no credit card on file.
     Cheers, Tom

  • Microsoft OLE DB Provider for Oracle: Data type is not supported.

    I got the error:
    Microsoft OLE DB Provider for Oracle: Data type is not supported.
    Shortly after upgrading from Oracle 8 to Oracle 9. I was advised to download more up to date oracle drivers, but I was wondering if there was a way to tell what version of the 'OLE DB Provider for Oracle' is already at. Is there a command I can use via SQL Plus or something?

    I have found Microsoft ODBC for Oracle to be more stable than the Microsoft OLEDB for Oracle driver. I have also found both Microsoft ODBC and OLEDB drivers to be more stable than the drivers from Oracle.
    You could always get the latest MDAC (Microsoft Data Access Components) from Microsoft's MSDN Download site and then get the ODAC (Oracle Data Access Components) from Oracle's OTN Download site. ODAC requires MDAC. And ODAC has the latest drivers.
    I suppose it would help to have the latest patches for your Oracle client software too. Maybe Oracle MetaLink would have these?
    It may even help to have the latest service pack for Visual Studio 6 (Visual C++ 6 and Visual Basic 6) too.

Maybe you are looking for