Failure Must Cause Rollback

Oracle JCA Adapter for Database 9-31 Row Column name=DEPTNO sqltype=NUMBER20Column ... Row refCursorOutputParam However the XML output from this is hard to use. It is very difficult to write an Xpath expression or XSL based on a weakly typed XSD and column names as attribute values instead of element names. Although a row set can represent any result set, it is possible to assume for some procedures that it will have the same structure each time, and hence can be described with a strongly typed XSD. A strongly typed XSD is almost a necessity if you want to transform the result set to another XSD later on. A strongly typed XSD looks like the XSD that Example 9–2 shows. Example 9–2 Strongly Typed XSD refCursorOutputParam dept deptno20deptno ... dept refCursorOutputParam You can use the Adapter Configuration Wizard to create a strongly typed XSD for a row set returned by a stored procedure or function REF CURSOR variable. An Oracle Database function is a special stored procedure that always has one out variable, and can be inlined - for example, inside select statements - and so traditionally does not do updates. Using this feature, you can select a stored procedure or stored function, enter its arguments, and perform a test execution to retrieve an actual row set. The Adapter Configuration Wizard then introspects the returned row set and generates a strongly typed XSD. You can enter arguments easily through the wizard. For example, you can enter numbers and strings directly, dates as literals 20091111, and you can even enter structs like MYOBJa, b. The Adapter Configuration Wizard row set support using a strongly typed XSD has the following restrictions: ■ Oracle Database PLSQL record or boolean types are not supported. ■ Oracle Database PLSQL varray is not supported. ■ Oracle Database PLSQL rowtype is not supported. ■ Oracle Database PLSQL table types are not supported. ■ Oracle Database PLSQL procedures with IN only REF CURSOR parameters are not supported. For an Oracle Database PLSQL procedure with REF CURSOR as an INOUT parameter, the Adapter Configuration Wizard ignores the IN and generates the strongly typed XSD based on the OUT parameter. ■ Referencing an element in the XSD using ref is not supported. Note: Functions are not supported for IBM DB2 UDB. Only SQL stored procedures are supported. 9-32 Oracle Fusion Middleware Users Guide for Technology Adapters ■ SQL Server 2008 table valued functions and CLR functions are not supported. The Oracle Database Adapter supports strongly typed XSD for the following third-party databases: ■ Microsoft SQL Server 2005 ■ Microsoft SQL Server 2008 ■ IBM DB2 UDB 9.7 The Oracle Database Adapter does not support strongly typed XSD for the following third-party databases: ■ IBM DB2 AS400 ■ MySQL ■ Informix Dynamic Server ■ Sybase 15.0.2 For more information, see: ■ Section 9.7, Stored Procedure and Function Support ■ Section 9.7.7.1, Row Set Support Using a Strongly Typed XSD ■ Section 9.7.7.2, Row Set Support Using a Weakly Typed XSD

9.3.4 Proxy Authentication Support

You can connect to your Oracle data store by using Proxy Authentication. On a per-invoke basis, you can set a combination of the following new header properties: ■ jca.db.ProxyUserName: to use the OracleConnection.PROXYTYPE_USER_ PASSWORD proxy type, set this property to the proxy user name as a java.lang.String. ■ jca.db.ProxyPassword: to use the OracleConnection.PROXYTYPE_USER_ PASSWORD proxy type, set this property to the proxy user password as a java.lang.String. ■ jca.db.ProxyCertificate: to use the OracleConnection.PROXYTYPE_ CERTIFICATE proxy type, set this property to a base64Binary encoded byte[] array containing a valid certificate. This is a more encrypted way of passing the credentials of the user, who is to be proxied, to the database. The certificate contains the distinguished name encoded in it. One way of generating the certificate is by creating a wallet and then decoding the wallet to get the certificate. The wallet can be created using runutl mkwallet. It is then necessary to authenticate using the generated certificate. ■ jca.db.ProxyDistinguishedName: to use the OracleConnection.PROXYTYPE_DISTINGUISHED_NAME proxy type, set this property to the proxy distinguished name as a java.lang.String. This is a global name in lieu of the password of the user being proxied for. ■ jca.db.ProxyRoles: regardless of what proxy type you use, you can optionally set this property to define the roles associated with the proxy user as a String[] array where each java.lang.String corresponds to a role name. ■ jca.db.ProxyIsThickDriver: if you are using the OCI driver, set this property to a value of true to accommodate differences in the JDBC-level API between the thick and thin drivers.