Complex Data Type Support for Operations
IFS OData Provider supports complex parameter types, and return types in actions and functions. This section covers details about the usage and limitations of such complex parameter types, and return types.
Supported Data Types for Attributes in Complex Data Types
OData operations support Complex data types with attributes of simple, complex and collection. Below is a list of supported data types inside Complex data types.
- Alpha
- Boolean
- Date
- Enumeration
- GUID
- Integer
- Number
- Text
- Time
- Timestamp
- Complex Data Type
- Array
Calling OData Operations with Complex Data Type Parameters and Return Types
- Actions
- Functions
- Return Type
Challenges and Solutions
- It is possible to customize the attribute arrangement of a Complex Data Type by adding/removing attributes or changing the order of the attributes.
- With these changes, the cached JDBC Complex Data Type descriptor becomes stale.
- In this case, according to Oracle it throws an SQLException.
Note! Oracle JDBC drivers cache array and structure descriptors. This provides enormous performance benefits. However, it means that if you change the underlying type definition of a structure type in the database, the cached descriptor for that structure type will become stale and your application will receive an SQLException
exception.
Click here for Oracle documentation
- Forcefully creating the structure descriptor is deprecated from the Oracle 12c and onward, due to some performance issues.
- In this scenario, the SQL connection to be destroyed is marked by the connection pool, and throws an exception (as shown in the example below) to inform the client.
LOBs Inside Structure
IFS OData Provider does not support LOBs inside a structure parameter in some ways. Let's think of a scenario like below.
- If you have a projection model (Ex :- IntegrationTest) in Developer Studio and with it's model header category set to "Integration".
- And with the following definitions in the model file (IntegrationTest.projection) and in source file (IntegrationTest.plsvc).
- IntegrationTest.projection File
- IntegrationTest.plsvc File
- With above definitions in the projection file and plsvc file, If you generate code and deploy this scenario and test in postman, Oracle will throw a SQLException like below.
Solution When Handling LOBs Inside Structure
The recommended approach when handling LOBs is to use Streaming to upload the content using a three step approach. Please refer this url for further assistant.
Back