PL/SQL API for report9i
I am working with Report Builder 9.0.2.0.3 in Oracle 9ids. One of the new feature supposed to be Event Based Publishing through PL/SQL API but I am unable to locate this API. I want to call report from a database package.
Where is this API located and How can I call it? Is it in 9i packages or in report builder.
Sanjay
See the Publishing Reports Manual:
http://otn.oracle.com/products/reports/htdocs/getstart/docs/A92102_01/pbr_evnt.htm#1005593
The SQL scripts for the installing the API into a database are located in the $ORACLE_HOME/reports/admin/sql/ directory.
-Manish
Similar Messages
-
PL/SQL API for Creating Sales Order
Hi,
I am new to Oracle SOA 11g.
I have done the Deleting Sales Order using PL/SQL API ( Oracle Apps Adapter ) [ API Name: OE_ORDER_PUB.DELETE_ORDER ] in SOA BPEL. While executing the BPEL, it is correctly deleting Sales Order in E Business Suite which is created in EBS User Interface. I don't face any problem while deleting the sales order.
Now, in same way, I have to create a new Sales Order using PL/SQL API in SOA-BPEL. I don't find any API's related to creating Sales Order in Order Management Suite (OM_PF) -->Order Management (ONT) --> Sales Order (ONT_SALES_ORDER) --> PL/SQL --> Process Order API (OE_ORDER_PUB) in Module Browser.
Please tell me which PL/SQL API to use to create new Sales Order in BPEL.
Thanks,
-- Gowtham
Edited by: user8223943 on Feb 16, 2012 7:38 AMYou may be on a different patch level. Can you ensure that you have applied all latest patches for your version?
See sample code at http://jyotioraapps.blogspot.com/2009/08/use-of-oeorderpubprocessorder-to-create.html
Hope this helps,
Sandeep Gandhi -
PL/SQL API for Creating Sales Order in E Business Suite from BPEL
Hi,
I am new to Oracle SOA 11g.
I have done the Deleting Sales Order using PL/SQL API ( Oracle Apps Adapter ) [ API Name: OE_ORDER_PUB.DELETE_ORDER ]. While executing the BPEL, it is correctly deleting Sales Order in E Business Suite which is created EBS User Interface. I don't face any problem while deleting the sales order.
Now, in same way, I have to create a new Sales Order using PL/SQL API. I don't find any API's related to creating Sales Order in Order Management Suite (OM_PF) -->Order Management (ONT) --> Sales Order (ONT_SALES_ORDER) --> PL/SQL --> Process Order API (OE_ORDER_PUB) in Module Browser.
Please tell me which PL/SQL API to use to create new Sales Order in BPEL.
Thanks,
-- GowthamYou may be on a different patch level. Can you ensure that you have applied all latest patches for your version?
See sample code at http://jyotioraapps.blogspot.com/2009/08/use-of-oeorderpubprocessorder-to-create.html
Hope this helps,
Sandeep Gandhi -
I am working with Report Builder 9.0.2.0.3 in Oracle 9ids. One of the new feature supposed to be Event Based Publishing through PL/SQL API but I am unable to locate this API. I wanr to call reports from a database package.
Where is this API located and How can I call it? Is it with the Oracle 9i packages or in report builder?
SanjayHi Sanjay,
Please repost your question in the Reports forum - Reports
Sujatha.
http://otn.oracle.com/sample_code/content.html -
DB SQL API for BDB: out of memory
Hi,
I posted a related thread here: Report Bug of SQLite-compatible API: Out of Memory Error but it is not answered yet so I am posting it again...Sorry for duplicate.
Basically, we are evaluating Berkeley DB as a candidate for our database solution. However, we ran into an out-of-memory error when using BDB's SQLite-compatible API to deal with memory databases. Here are some simple steps to repro the issue:
1. Open a memory database
2. Insert many records (about 200,000 records) into it
3. Close the database
4. Repeat from step 1.
Expected result: because I already closed the previous memory database, there should be no error.
Actual result: out of memory.
Here's the test program I am using:
int
testMemoryDatabase()
db_handle *db;
const char *sql;
int i;
// Setup database
db = setup(":memory:");
// Create tables
sql = "create table Table1 (col1 varchar(32), col2 int);"
"create table Table2 (col1 varchar(32), col2 varchar(64));"
"create table Table3 (col1 varchar(32), col2 int);"
"create table Table4 (col1 varchar(64), col2 int, col3 smallint, col4 int, col5 DateTime);"
"create table Table5 (col1 varchar(64), col2 varchar(64), col3 varchar(1024));";
exec_sql(db, sql);
// Do insert operations
sql = "insert into Table1 values ('xxxxxxxxxxxxxx', '523620105');insert into Table2 values ('xxxxxxxxxxxxxx', 'xxxxxxxxxxxxxx');insert into Table3 values ('xxxxxxxxxxxxxx', '1688709171');insert into Table4 values ('xxxxxxxxxxxxxx', '844867696', '32671917', '424084999', 'xxxxxxxxxxxxxx');insert into Table5 values ('xxxxxxxxxxxxxx', 'xxxxxxxxxxxxxx', 'xxxxxxxxxxxxxx');insert into Table1 values ('xxxxxxxxxxxxxx', '0');insert into Table2 values ('xxxxxxxxxxxxxx', '0');insert into Table3 values ('xxxxxxxxxxxxxx', '0');insert into Table4 values ('xxxxxxxxxxxxxx', '0', '0', '0', 'xxxxxxxxxxxxxx');insert into Table5 values ('xxxxxxxxxxxxxx', 'xxxxxxxxxxxxxx', '0');";
for (i = 0; i < 20000; ++i)
if (i % 1000 == 0) printf("%d\n", i);
exec_sql(db, sql);
// Clean up
cleanup(db);
int
main()
db_handle *db;
testMemoryDatabase();
testMemoryDatabase();
testMemoryDatabase();
testMemoryDatabase();
// Add more testMemoryDatabase() calls...
The out of memory error somewhat blocks us to use BDB memory DB...if it can be solved that will be great. Also, please point out right place if the forum is not the place to report such a bug.
Thanks a lot!
- lieHi Lie,
I have reproduced the issue and we're investigating a fix that will be available in a future release. If you need a solution sooner than that, please let me know.
Thanks again for the report.
Best regards,
Rucong Zhao -
ADF BC VO based on PL/SQL-API
Hi,
We have the following scenario.
It exists a PL/SQL-API in the database which return a rowtype (the function must not be modified). These data are displayed in the GUI.
FUNCTION get_rec(p_parm IN table.column%type) RETURN table%rowtype;We found no declarative solution to create a ADF VO or ADF EO on a PL/SQL-API.
In the documentation "38.5 Basing an Entity Object on a PL/SQL Package API" the combine a db-view for reading (R) and pl/sql-api for the DML (CUD).
On solution would be to define a SQL Type for this scenario, and add a new PL/SQL-function (because the orginal function must not be modified) which returns the type.
FUNCTION get_rec(p_parm IN table.column%type) RETURN OUR_SQL_TYPE;Then we can use a statment like SELECT * FROM TABLE(pkg_x.get_rec(:param)) in the ADF BC VO.
Note:
We found [url https://database-api-based-adf-bc.samplecode.oracle.com/]database-api-based-adf-bc. but "Last Updated: Nov. 10, 2009 and Current Version: 0.2b" does not sound very encouraging.
And [url http://technology.amis.nl/blog/3315/creating-an-adf-application-based-on-plsql-api-part-one-reading-data-as-a-collection-of-sql-type-objects]adf-application-based-on-plsql-api. is a good blog-post too but adjustments in the database (SQL_TYPE, ...) must also be made.
Technologie: ADF 11g (Fusion Stack: ADF BC, ADF Faces)
Question: Is there a more elegant (declarative) solution for this problem without making the request to change the code DB?
Best Regards
MartinMartin, I've tried several of the strategies that you've mentioned, and the one I liked best was to write a new function to translate the rowtype to a nested table of object type so that you can create a VO that is a SELECT from TABLE. More work on the database side, but the VO is declarative. There really isn't much better because a PL/SQL record is only usable within PL/SQL.
John, I have used JPublisher which works well to create POJOs that execute PL/SQL functions and that represent database objects created with CREATE TYPE. It even generates the DDL and PL/SQL code that would be needed to create the object types to mirror PL/SQL record types. But you still have to write some code to integrate the generated code into ADF BC. In particular, the constructors for the POJOs take a Connection as an argument - obviously, you can't run PL/SQL without a connection to an Oracle RDBMS. So you usually want to instantiate the objects in an AM, which can provide a Connection. Not a bad tool - pretty useful for some scenarios, but still not as declarative as Martin (or I) would like. -
Berkeley DB with SQL API: Where to start?
Hi,
I am an Oracle DBA and just starting to look at Berkeley DB for a new project at work. I intend to use the SQL API, so I have downloaded and installed Berkeley 11g R2 (using the windows msi).
However, I have been browsing around the documentation for 2 days now but still don't understand how to actually create a database! Is this not possible with the SQL API? Do I have to do it from "somewhere else" and just use the API to access the data?
The strange thing is, if I open the API (dbsql) I can create a table:
dbsql> create table test_tab(x int) ;
dbsql> .tables
test_tab
dbsql> exitBut I have no idea where that table is actually created and stored? I don't see a file on disk (a "database" is a file, right?). If I open dbsql again, the table is not shown.
Sorry for the dumb questions but I'm really an old relational-DB guy struggling to come to terms with this architecturally and functionally different idea of a database. Hope someone can help, or at least point me to a "Berkeley DB using SQL API for complete and utter dummies" type guide.
Regards,
El DBAHi Sandra,
Thanks very much for the information. I have been looking through the documentation and starting to get to grips with this now.
We do have one important issue though, which comes from within the FAQ you mentioned. I see it's also been talked about in this thread:
ado.net provider
In the FAQ, it says:
Does Berkeley DB support ADO.NET?
There are some known issues related to using the public domain SQLite ADO.NET provider with Berkeley DB. We are actively working on clearly defining those issues, and hopefully resolving them. Is there any idea of a date for the ado.net support? In our development, we are using that very same provider, which is the same one as mentioned in that thread (it's system.data.sqlite.dll from http://sqlite.phxsoftware.com) but will not be able to commit to developing with Berkeley until the support is offered.
Kind regards,
Adam
Edited by: El DBA on Jul 29, 2010 1:13 PM
Edited by: El DBA on Jul 29, 2010 1:16 PM -
Java API for running entire ".sql" files on a remote DB ( mySQL or Oracle)?
Hi,
Would anyone happen to know if there's a java API for executing entire ".sql" files (containing several different SQL commands), on a remote database server ?
It's enough if the API works with MySQL and/or Oracle.
Just to demonstrate what i'm looking for:
Suppose you've created sql file "c:/test.sql" with several script lines:
-- test.sql:
insert into TABLE1 values(3,3);
insert into TABLE1 values(5,5);
create table TABLE2 (name VARCHER) ENGINE innoDB; -- MYSQL specific
Then the java API should look something like:
// Dummy java code:
String driver="com.mysql.jdbc.Driver";
String url= "jdbc:mysql://localhost:3306/myDb";
SomeAPI.executeScriptFile( "c:/test.sql", driver, url);
Thanks.No such a API, but it's easy to parse all sqls in a file, then run those command:
For instance:
import java.sql.*;
import java.util.Properties;
/* A demo show how to load some sql statements. */
public class testSQL {
private final static Object[] getSQLStatements(java.util.Vector v) {
Object[] statements = new Object[v.size()];
Object temp;
for (int i = 0; i < v.size(); i++) {
temp = v.elementAt(i);
if (temp instanceof java.util.Vector)
statements[i] = getSQLStatements( (java.util.Vector) temp);
else
statements[i] = temp;
return statements;
public final static Object[] getSQLStatements(String sqlFile) throws java.
io.IOException {
java.util.Vector v = new java.util.Vector(1000);
try {
java.io.BufferedReader br = new java.io.BufferedReader(new java.io.
FileReader(sqlFile));
java.util.Vector batchs = new java.util.Vector(10);
String temp;
while ( (temp = br.readLine()) != null) {
temp = temp.trim();
if (temp.length() == 0)
continue;
switch (temp.charAt(0)) {
case '*':
case '"':
case '\'':
// System.out.println(temp);
break; //Ignore any line which begin with the above character
case '#': //Used to begin a new sql statement
if (batchs.size() > 0) {
v.addElement(getSQLStatements(batchs));
batchs.removeAllElements();
break;
case 'S':
case 's':
case '?':
if (batchs.size() > 0) {
v.addElement(getSQLStatements(batchs));
batchs.removeAllElements();
v.addElement(temp);
break;
case '!': //Use it to get a large number of simple update statements
if (batchs.size() > 0) {
v.addElement(getSQLStatements(batchs));
batchs.removeAllElements();
String part1 = temp.substring(1);
String part2 = br.readLine();
for (int i = -2890; i < 1388; i += 39)
batchs.addElement(part1 + i + part2);
for (int i = 1890; i < 2388; i += 53) {
batchs.addElement(part1 + i + part2);
batchs.addElement(part1 + i + part2);
for (int i = 4320; i > 4268; i--) {
batchs.addElement(part1 + i + part2);
batchs.addElement(part1 + i + part2);
for (int i = 9389; i > 7388; i -= 83)
batchs.addElement(part1 + i + part2);
v.addElement(getSQLStatements(batchs));
batchs.removeAllElements();
break;
default:
batchs.addElement(temp);
break;
if (batchs.size() > 0) {
v.addElement(getSQLStatements(batchs));
batchs.removeAllElements();
br.close();
br = null;
catch (java.io.FileNotFoundException fnfe) {
v.addElement(sqlFile); //sqlFile is a sql command, not a file Name
Object[] statements = new Object[v.size()];
for (int i = 0; i < v.size(); i++)
statements[i] = v.elementAt(i);
return statements;
public static void main(String argv[]) {
try {
String url;
Object[] statements;
switch (argv.length) {
case 0: //Use it for the simplest test
case 1:
url = "jdbc:dbf:/.";
if (argv.length == 0) {
statements = new String[1];
statements[0] = "select * from test";
else
statements = argv;
break;
case 2:
url = argv[0];
statements = getSQLStatements(argv[1]);
break;
default:
throw new Exception(
"Syntax Error: java testSQL url sqlfile");
Class.forName("com.hxtt.sql.dbf.DBFDriver").newInstance();
//Please see Connecting to the Database section of Chapter 2. Installation in Development Document
Properties properties = new Properties();
Connection con = DriverManager.getConnection(url, properties);
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
//Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
// stmt.setMaxRows(0);
stmt.setFetchSize(10);
final boolean serializeFlag = false;//A test switch to serialize/deserialize the resultSet
ResultSet rs;
for (int i = 0; i < statements.length; i++) {
if (statements[i] instanceof java.lang.String) {
String temp = (java.lang.String) statements;
switch (temp.charAt(0)) {
case 'S':
case 's':
case '?':
System.out.println(temp);
rs = stmt.executeQuery(temp);
if (serializeFlag) {
// serialize the resultSet
try {
java.io.FileOutputStream fileOutputStream = new
java.io.FileOutputStream("testrs.tmp");
java.io.ObjectOutputStream
objectOutputStream = new java.io.
ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(rs);
objectOutputStream.flush();
objectOutputStream.close();
fileOutputStream.close();
catch (Exception e) {
System.out.println(e);
e.printStackTrace();
System.exit(1);
rs.close(); //Let the CONCUR_UPDATABLE resultSet release its open files at once.
rs = null;
// deserialize the resultSet
try {
java.io.FileInputStream fileInputStream = new
java.io.FileInputStream("testrs.tmp");
java.io.ObjectInputStream objectInputStream = new
java.io.ObjectInputStream(
fileInputStream);
rs = (ResultSet) objectInputStream.
readObject();
objectInputStream.close();
fileInputStream.close();
catch (Exception e) {
System.out.println(e);
e.printStackTrace();
System.exit(1);
ResultSetMetaData resultSetMetaData = rs.
getMetaData();
int iNumCols = resultSetMetaData.getColumnCount();
for (int j = 1; j <= iNumCols; j++) {
// System.out.println(resultSetMetaData.getColumnName(j));
/* System.out.println(resultSetMetaData.getColumnType(j));
System.out.println(resultSetMetaData.getColumnDisplaySize(j));
System.out.println(resultSetMetaData.getPrecision(j));
System.out.println(resultSetMetaData.getScale(j));
System.out.println(resultSetMetaData.
getColumnLabel(j)
+ " " +
resultSetMetaData.getColumnTypeName(j));
Object colval;
rs.beforeFirst();
long ncount = 0;
while (rs.next()) {
// System.out.print(rs.rowDeleted()+" ");
ncount++;
for (int j = 1; j <= iNumCols; j++) {
colval = rs.getObject(j);
System.out.print(colval + " ");
System.out.println();
rs.close(); //Let the resultSet release its open tables at once.
rs = null;
System.out.println(
"The total row number of resultset: " + ncount);
System.out.println();
break;
default:
int updateCount = stmt.executeUpdate(temp);
System.out.println(temp + " : " + updateCount);
System.out.println();
else if (statements[i] instanceof java.lang.Object[]) {
int[] updateCounts;
Object[] temp = (java.lang.Object[]) statements[i];
try {
for (int j = 0; j < temp.length; j++){
System.out.println( temp[j]);
stmt.addBatch( (java.lang.String) temp[j]);
updateCounts = stmt.executeBatch();
for (int j = 0; j < temp.length; j++)
System.out.println((j+1)+":"+temp[j]);
for (int j = 0; j < updateCounts.length; j++)
System.out.println((j+1)+":" +updateCounts[j]);
catch (java.sql.BatchUpdateException e) {
updateCounts = e.getUpdateCounts();
for (int j = 0; j < updateCounts.length; j++)
System.out.println((j+1)+":"+updateCounts[j]);
java.sql.SQLException sqle = e;
do {
System.out.println(sqle.getMessage());
System.out.println("Error Code:" +
sqle.getErrorCode());
System.out.println("SQL State:" + sqle.getSQLState());
sqle.printStackTrace();
while ( (sqle = sqle.getNextException()) != null);
catch (java.sql.SQLException sqle) {
do {
System.out.println(sqle.getMessage());
System.out.println("Error Code:" +
sqle.getErrorCode());
System.out.println("SQL State:" + sqle.getSQLState());
sqle.printStackTrace();
while ( (sqle = sqle.getNextException()) != null);
stmt.clearBatch();
System.out.println();
stmt.close();
con.close();
catch (SQLException sqle) {
do {
System.out.println(sqle.getMessage());
System.out.println("Error Code:" + sqle.getErrorCode());
System.out.println("SQL State:" + sqle.getSQLState());
sqle.printStackTrace();
while ( (sqle = sqle.getNextException()) != null);
catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace(); -
Creating webservice for pl/sql API without using BPEL
Hi All,
Using BPEL, We have created partner links using DB Adapter for accessing our pl/sql API's.
Is there any way to create a web service for a pl/sql API having complex datatype parameters like (Record, table of records etc) using DB Adapter or any other tool without using BPEL?
Thanks,
Uma.We introduced the use of JPublisher to automate the generation of wrappers for PL/SQL procedures that use types such as boolean, record and table. The wizard will invoke JPub and generate artifacts that the partnerlink will use to invoke the wrapper instead of the original API. Boolean is replaced by INT, record is replaced by an object type and table is replaced by a nested table. The wrapper will invoke the original API. JPub also takes care of converting between the different types (i.e. record <-> object).
-
MakeProcessingInstruction PL/SQL DOM API for XMLType
Does anyone have a code snippet on how to use makeProcessingInstruction()(PL/SQL DOM API for XMLType)
Description
Casts a given DOMNode to a DOMProcessingInstruction, and returns the
DOMProcessingInstruction.
Syntax
FUNCTION makeProcessingInstruction( n DOMNode)
RETURN DOMProcessingInstruction;
Thanks in advancepieter,
I think you would want to use xmlview. A schema can be attached to the view definition, thereby creating a schema-based xmltype view.
ie create view nameview of xmltype
xmlschema "nameschema.xsd" ELEMENT "namehere"
as
select
xmlelement ("....xmlforest(....(select xmlagg(xmlelement(....
or something similar.
see link for more information regarding xml views.
http://www.vldb.org/conf/2003/papers/S30P02.pdf -
PL/SQL API + Defaulting Rules in OM
Hi,
I want to default custom rule in Sales Order from whenever I select Item. After selecting item from the sales order from, it should populate Warehouse value in Shipping tab. I am using custom PL/SQL API option. I wrote one function and kept in package. I was disabled all defaulting rules. Now If I select Item in sales order form, I am not getting warehouse value.
The steps are:
Step 1. Select Warehouse attribute and define defaulting rule
Application: Order Management
Entry: Order Line
Select Attribute as Warehouse
Click on Defaulting Rules
Step 2: Define Defaulting Sourcing Rule
Select Source type as PL/SQL API.
In the Defaulting Source/Value field give Package Name and Function Name.
Open Catalog Groups window from the below path: Setup Items Catalog Groups
Specify Name and Description for Catalog Group
Click on Details button.
Step 3: Create Catalog Group
Step 4: Specify Descriptive Elements for the Item Catalog Group
Step 5: Code preparation
-- My Custom Code
Create or replace FUNCTION custom_default_rule
RETURN VARCHAR2
AS
l_line_type_rec oe_order_cache.line_type_rec_type;
CURSOR cus_l
IS
SELECT a.organization_code, b.element_name, b.element_value
FROM mtl_parameters a,
mtl_descr_element_values b,
mtl_system_items_b c
WHERE b.inventory_item_id = c.inventory_item_id
AND a.organization_id = c.organization_id
AND a.organization_id = c.organization_id
AND c.inventory_item_id = 12924
GROUP BY a.organization_code, b.element_name, b.element_value
ORDER BY a.organization_code, b.element_name, b.element_value;
BEGIN
l_line_type_rec := oe_order_cache.load_line_type
(ont_line_def_hdlr.g_record.line_type_id);
FOR cur_rec IN cus_l
LOOP
IF cur_rec.element_name IN
('Frequency',
'Emission Norms',
'Voltage',
'Duty Rating',
'Phase',
'Product'
AND cur_rec.element_value IN
('50', '', '230', 'Medium', 'Single', 'QSK60')
THEN
RETURN cur_rec.organization_code;
ELSIF cur_rec.element_name IN
('Frequency',
'Emission Norms',
'Voltage',
'Duty Rating',
'Phase',
'Product'
AND cur_rec.element_value IN
('50', '', '230', 'Medium', 'Three', 'QSK15')
THEN
RETURN cur_rec.organization_code;
ELSIF cur_rec.element_name IN
('Frequency',
'Emission Norms',
'Voltage',
'Duty Rating',
'Phase',
'Productfamily'
AND cur_rec.element_value IN
('50', '', '230', 'Medium', 'Single', 'DQK50')
THEN
RETURN cur_rec.organization_code;
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
IF oe_msg_pub.check_msg_level (oe_msg_pub.g_msg_lvl_unexp_error)
THEN
oe_msg_pub.add_exc_msg ('OE_Default_PVT', 'CUSTOM_DEFAULT_RULE');
END IF;
RAISE fnd_api.g_exc_unexpected_error;
END custom_default_rule;
Step 6: Create a Sales Order (Order Returns Sales Orders)
Select Customer and Order Type and select Line Items Tab.
Select Item from the Ordered Item Field. Press Tab.
After pressing tab in the Shipping Tab Warehouse value Should be populated. But it is not working.
Can anyone guide me in this.
It is very urgent.
If possible, Please send u r details to my official id: [email protected]
Thanks in Advance,
sateeshSateesh,
This is working fine for me here:
CREATE OR REPLACE PACKAGE xx_def_wh
AS
FUNCTION custom_default_rule (p_database_object_name IN VARCHAR2, p_attribute_code IN VARCHAR2)
RETURN NUMBER;
END;
CREATE OR REPLACE PACKAGE BODY xx_def_wh
AS
FUNCTION custom_default_rule (p_database_object_name IN VARCHAR2, p_attribute_code IN VARCHAR2)
RETURN NUMBER
AS
l_line_type_rec oe_order_cache.line_type_rec_type;
l_item_id NUMBER;
CURSOR cus_l(p_item_id in number)
IS
SELECT a.organization_id, b.element_name, b.element_value
FROM mtl_parameters a, mtl_descr_element_values b, mtl_system_items_b c
WHERE b.inventory_item_id = c.inventory_item_id
AND a.organization_id = c.organization_id
AND a.organization_id = c.organization_id
AND c.inventory_item_id = p_item_id
and a.organization_id<>a.master_organization_id
ORDER BY a.organization_id;
BEGIN
l_line_type_rec := oe_order_cache.load_line_type (ont_line_def_hdlr.g_record.line_type_id);
l_item_id:= ONT_LINE_DEF_HDLR.g_record.inventory_item_id;
FOR cur_rec IN cus_l(l_item_id)
LOOP
IF cur_rec.element_name IN ('Frequency', 'Emission Norms', 'Voltage', 'Duty Rating', 'Phase', 'Product')
AND cur_rec.element_value IN ('50', '', '230', 'Medium', 'Single', 'QSK60')
THEN
RETURN cur_rec.organization_id;
ELSIF cur_rec.element_name IN ('Frequency', 'Emission Norms', 'Voltage', 'Duty Rating', 'Phase', 'Product')
AND cur_rec.element_value IN ('50', '', '230', 'Medium', 'Three', 'QSK15')
THEN
RETURN cur_rec.organization_id;
ELSIF cur_rec.element_name IN ('Frequency', 'Emission Norms', 'Voltage', 'Duty Rating', 'Phase', 'Productfamily')
AND cur_rec.element_value IN ('50', '', '230', 'Medium', 'Single', 'DQK50')
THEN
RETURN cur_rec.organization_id;
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
IF oe_msg_pub.check_msg_level (oe_msg_pub.g_msg_lvl_unexp_error)
THEN
oe_msg_pub.add_exc_msg ('OE_Default_PVT', 'CUSTOM_DEFAULT_RULE');
END IF;
RAISE fnd_api.g_exc_unexpected_error;
END custom_default_rule;
END;
Thanks
Nagamohan -
Error while invoking PL/SQL API from DB Adapter
Hi everybody.
We have a plenty of processes, which invokes PL/SQL API using DB Adapters. Everything goes ok, but sometimes API invocations results with error like this:
<bindingFault>
<part name="code" >
<code>902</code>
</part>
<part name="summary" >
<summary>file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/insert_person.wsdl [ insert_person_ptt::insert_person(InputParameters,OutputParameters) ]
- WSIF JCA Execute of operation 'insert_person' failed due to: Error while trying to prepare and execute an API. An error occurred while preparing and executing the XXAR_CUSOMER_WRAP_PKG.CREATE_PERSON API. Cause: java.sql.SQLException: ORA-00902: invalid datatype ; nested exception is: ORABPEL-11811 Error while trying to prepare and execute an API. An error occurred while preparing and executing the XXAR_CUSOMER_WRAP_PKG.CREATE_PERSON API. Cause: java.sql.SQLException: ORA-00902: invalid datatype Check to ensure that the API is defined in the database and that the parameters match the signature of the API. Contact oracle support if error is not fixable. </summary>
</part>
<part name="detail" >
<detail>ORA-00902: invalid datatype </detail>
</part>
</bindingFault>
(text from Activity Audit trail)
The error disappears after some "magic" actions like redeploying the process, clearing WSDL cache or restarting BPEL server.
Any suggestions?
Debug log for the error:
Oracle BPEL Server version 10.1.2.0.2
Build: 2196
Build time: Tue Jan 10 12:31:53 UTC 2006
Build type: release
Source tag: BPEL_10.1.2.0.2_GENERIC_060110.1200
<2006-06-08 09:03:45,437> <INFO> <dev.collaxa.cube.engine> <CubeEngine::load>
<2006-06-09 15:13:45,162> <DEBUG> <dev.collaxa.cube.ws> <WSInvocationManager::invoke> operation: get_person, partnerLink: <partnerLink name="PL_get_person" partnerLinkType="{http://xmlns.oracle.com/pcbpel/adapter/db/get_person/}get_person_plt">
<myRole name="null">
<ServiceName>null</ServiceName>
<PortType>null</PortType>
<Address>null</Address>
</myRole>
<partnerRole name="get_person_role">
<ServiceName>null</ServiceName>
<PortType>{http://xmlns.oracle.com/pcbpel/adapter/db/get_person/}get_person_ptt</PortType>
<Address>null</Address>
</partnerRole>
<conversationId>bpel://localhost/dev/Customer_Dispatcher~1.0/2413-BpInv2-BpSeq2.8-2</conversationId>
<properties>{}</properties>
</partnerLink>
<2006-06-09 15:13:45,162> <DEBUG> <dev.collaxa.cube.ws> <WSInvocationManager::invoke> def is file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Customer_Dispatcher_1.0.jar/get_person.wsdl
<2006-06-09 15:13:45,162> <DEBUG> <dev.collaxa.cube.ws> <WSIFInvocationHandler::invoke> opName=get_person, parnterLink=<partnerLink name="PL_get_person" partnerLinkType="{http://xmlns.oracle.com/pcbpel/adapter/db/get_person/}get_person_plt">
<myRole name="null">
<ServiceName>null</ServiceName>
<PortType>null</PortType>
<Address>null</Address>
</myRole>
<partnerRole name="get_person_role">
<ServiceName>{http://xmlns.oracle.com/pcbpel/adapter/db/get_person/}get_person</ServiceName>
<PortType>{http://xmlns.oracle.com/pcbpel/adapter/db/get_person/}get_person_ptt</PortType>
<Address>null</Address>
</partnerRole>
<conversationId>bpel://localhost/dev/Customer_Dispatcher~1.0/2413-BpInv2-BpSeq2.8-2</conversationId>
<properties>{}</properties>
</partnerLink>
<2006-06-09 15:13:45,162> <DEBUG> <dev.collaxa.cube.ws> <WSIFInvocationHandler::doShortCut> Parner Property optShortCut
<2006-06-09 15:13:45,163> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Customer_Dispatcher_1.0.jar/get_person.wsdl [ get_person_ptt::get_person(InputParameters,OutputParameters) ] - No XMLRecord headers provided
<2006-06-09 15:13:45,164> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Customer_Dispatcher_1.0.jar/get_person.wsdl [ get_person_ptt::get_person(InputParameters,OutputParameters) ] - Starting JCA LocalTransaction
<2006-06-09 15:13:45,164> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Customer_Dispatcher_1.0.jar/get_person.wsdl [ get_person_ptt::get_person(InputParameters,OutputParameters) ] - Invoking JCA outbound Interaction
<2006-06-09 15:13:45,164> <DEBUG> <dev.collaxa.cube.ws> <Database Adapter::Outbound> <oracle.tip.adapter.db.TopLinkLogger log> client acquired
<2006-06-09 15:13:45,165> <DEBUG> <dev.collaxa.cube.ws> <Database Adapter::Outbound> <oracle.tip.adapter.db.TopLinkLogger log> begin transaction
<2006-06-09 15:13:45,166> <DEBUG> <dev.collaxa.cube.ws> <Database Adapter::Outbound> <oracle.tip.adapter.db.sp.AbstractStoredProcedure execute> BEGIN XXAR_CUSOMER_WRAP_PKG.GET_PERSON_REC(P_PARTY_ID=>?, X_PERSON_REC=>?, X_RETURN_STATUS=>?, X_RETURN_MESSAGE=>?); END;
<2006-06-09 15:13:45,173> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Customer_Dispatcher_1.0.jar/get_person.wsdl [ get_person_ptt::get_person(InputParameters,OutputParameters) ] - Committing JCA LocalTransaction
<2006-06-09 15:13:45,173> <DEBUG> <dev.collaxa.cube.ws> <Database Adapter::Outbound> <oracle.tip.adapter.db.TopLinkLogger log> commit transaction
<2006-06-09 15:13:45,174> <DEBUG> <dev.collaxa.cube.ws> <Database Adapter::Outbound> <oracle.tip.adapter.db.TopLinkLogger log> client released
<2006-06-09 15:13:45,176> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> Returning outbound XMLRecord for OutputParameters
<2006-06-09 15:13:45,192> <DEBUG> <dev.collaxa.cube.ws> <WSInvocationManager::invoke> operation: initiate, partnerLink: <partnerLink name="PL_ins_upd_person" partnerLinkType="{http://xmlns.oracle.com/Ins_person_M2S}Ins_person_M2S">
<myRole name="Ins_person_M2SRequester">
<ServiceName>null</ServiceName>
<PortType>{http://xmlns.oracle.com/Ins_person_M2S}Ins_person_M2SCallback</PortType>
<Address>null</Address>
</myRole>
<partnerRole name="Ins_person_M2SProvider">
<ServiceName>null</ServiceName>
<PortType>{http://xmlns.oracle.com/Ins_person_M2S}Ins_person_M2S</PortType>
<Address>null</Address>
</partnerRole>
<conversationId>bpel://localhost/dev/Customer_Dispatcher~1.0/2413-BpInv3-BpSeq2.8-5</conversationId>
<properties>{}</properties>
</partnerLink>
<2006-06-09 15:13:45,193> <DEBUG> <dev.collaxa.cube.ws> <WSInvocationManager::invoke> def is http://wizard.etops.ru:7780/orabpel/dev/Ins_person_M2S/Ins_person_M2S?wsdl
<2006-06-09 15:13:45,193> <DEBUG> <dev.collaxa.cube.ws> <WSIFInvocationHandler::invoke> opName=initiate, parnterLink=<partnerLink name="PL_ins_upd_person" partnerLinkType="{http://xmlns.oracle.com/Ins_person_M2S}Ins_person_M2S">
<myRole name="Ins_person_M2SRequester">
<ServiceName>{http://xmlns.oracle.com/Ins_person_M2S}Ins_person_M2SCallbackService</ServiceName>
<PortType>{http://xmlns.oracle.com/Ins_person_M2S}Ins_person_M2SCallback</PortType>
<Address>http://wizard.etops.ru:7780/orabpel/dev/Customer_Dispatcher/1.0/PL_ins_upd_person/Ins_person_M2SRequester</Address>
</myRole>
<partnerRole name="Ins_person_M2SProvider">
<ServiceName>{http://xmlns.oracle.com/Ins_person_M2S}Ins_person_M2S</ServiceName>
<PortType>{http://xmlns.oracle.com/Ins_person_M2S}Ins_person_M2S</PortType>
<Address>null</Address>
</partnerRole>
<conversationId>bpel://localhost/dev/Customer_Dispatcher~1.0/2413-BpInv3-BpSeq2.8-5</conversationId>
<properties>{}</properties>
</partnerLink>
<2006-06-09 15:13:45,193> <DEBUG> <dev.collaxa.cube.ws> <WSIFInvocationHandler::doShortCut> Parner Property optShortCut
<2006-06-09 15:13:45,193> <DEBUG> <dev.collaxa.cube.ws> <WSIFInvocationHandler::doShortCut> Calling local process http://wizard.etops.ru:7780/orabpel/dev/Ins_person_M2S/1.0 ... shortcut
<2006-06-09 15:13:45,194> <DEBUG> <dev.collaxa.cube.ws> <WSIFInvocationHandler::invokeLocalService> location=http://wizard.etops.ru:7780/orabpel/dev/Ins_person_M2S/1.0
<2006-06-09 15:13:45,194> <DEBUG> <dev.collaxa.cube.ws> <WSIFInvocationHandler::invokeLocalService> processId=Ins_person_M2S, revisionTag=1.0, partnerLinkName=, roleName=
<2006-06-09 15:13:45,255> <DEBUG> <dev.collaxa.cube.ws> <WSInvocationManager::invoke> operation: check_person, partnerLink: <partnerLink name="PL_check_person" partnerLinkType="{http://xmlns.oracle.com/pcbpel/adapter/db/check_person/}check_person_plt">
<myRole name="null">
<ServiceName>null</ServiceName>
<PortType>null</PortType>
<Address>null</Address>
</myRole>
<partnerRole name="check_person_role">
<ServiceName>null</ServiceName>
<PortType>{http://xmlns.oracle.com/pcbpel/adapter/db/check_person/}check_person_ptt</PortType>
<Address>null</Address>
</partnerRole>
<conversationId>bpel://localhost/dev/Ins_person_M2S~1.0/2414-BpInv0-BpSeq1.5-1</conversationId>
<properties>{}</properties>
</partnerLink>
<2006-06-09 15:13:45,255> <DEBUG> <dev.collaxa.cube.ws> <WSInvocationManager::invoke> def is file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/check_person.wsdl
<2006-06-09 15:13:45,255> <DEBUG> <dev.collaxa.cube.ws> <WSIFInvocationHandler::invoke> opName=check_person, parnterLink=<partnerLink name="PL_check_person" partnerLinkType="{http://xmlns.oracle.com/pcbpel/adapter/db/check_person/}check_person_plt">
<myRole name="null">
<ServiceName>null</ServiceName>
<PortType>null</PortType>
<Address>null</Address>
</myRole>
<partnerRole name="check_person_role">
<ServiceName>{http://xmlns.oracle.com/pcbpel/adapter/db/check_person/}check_person</ServiceName>
<PortType>{http://xmlns.oracle.com/pcbpel/adapter/db/check_person/}check_person_ptt</PortType>
<Address>null</Address>
</partnerRole>
<conversationId>bpel://localhost/dev/Ins_person_M2S~1.0/2414-BpInv0-BpSeq1.5-1</conversationId>
<properties>{}</properties>
</partnerLink>
<2006-06-09 15:13:45,255> <DEBUG> <dev.collaxa.cube.ws> <WSIFInvocationHandler::doShortCut> Parner Property optShortCut
<2006-06-09 15:13:45,258> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/check_person.wsdl [ check_person_ptt::check_person(InputParameters,OutputParameters) ] - No XMLRecord headers provided
<2006-06-09 15:13:45,258> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/check_person.wsdl [ check_person_ptt::check_person(InputParameters,OutputParameters) ] - Starting JCA LocalTransaction
<2006-06-09 15:13:45,259> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/check_person.wsdl [ check_person_ptt::check_person(InputParameters,OutputParameters) ] - Invoking JCA outbound Interaction
<2006-06-09 15:13:45,259> <DEBUG> <dev.collaxa.cube.ws> <Database Adapter::Outbound> <oracle.tip.adapter.db.TopLinkLogger log> client acquired
<2006-06-09 15:13:45,260> <DEBUG> <dev.collaxa.cube.ws> <Database Adapter::Outbound> <oracle.tip.adapter.db.TopLinkLogger log> begin transaction
<2006-06-09 15:13:45,262> <DEBUG> <dev.collaxa.cube.ws> <Database Adapter::Outbound> <oracle.tip.adapter.db.sp.AbstractStoredProcedure execute> BEGIN XXAR_CUSTOMER_BPCONF_CHECK_PKG.CHECK_PERSON(P_ACTION=>?, P_PERSON=>?, X_RESULT=>?, X_CONFLICTS=>?); END;
<2006-06-09 15:13:45,263> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/check_person.wsdl [ check_person_ptt::check_person(InputParameters,OutputParameters) ] - Committing JCA LocalTransaction
<2006-06-09 15:13:45,264> <DEBUG> <dev.collaxa.cube.ws> <Database Adapter::Outbound> <oracle.tip.adapter.db.TopLinkLogger log> commit transaction
<2006-06-09 15:13:45,264> <DEBUG> <dev.collaxa.cube.ws> <Database Adapter::Outbound> <oracle.tip.adapter.db.TopLinkLogger log> client released
<2006-06-09 15:13:45,265> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> Returning outbound XMLRecord for OutputParameters
<2006-06-09 15:13:45,273> <DEBUG> <dev.collaxa.cube.ws> <WSInvocationManager::invoke> operation: insert_person, partnerLink: <partnerLink name="PL_insert_person" partnerLinkType="{http://xmlns.oracle.com/pcbpel/adapter/db/insert_person/}insert_person_plt">
<myRole name="null">
<ServiceName>null</ServiceName>
<PortType>null</PortType>
<Address>null</Address>
</myRole>
<partnerRole name="insert_person_role">
<ServiceName>null</ServiceName>
<PortType>{http://xmlns.oracle.com/pcbpel/adapter/db/insert_person/}insert_person_ptt</PortType>
<Address>null</Address>
</partnerRole>
<conversationId>bpel://localhost/dev/Ins_person_M2S~1.0/2414-BpInv2-BpSeq4.12-1</conversationId>
<properties>{}</properties>
</partnerLink>
<2006-06-09 15:13:45,274> <DEBUG> <dev.collaxa.cube.ws> <WSInvocationManager::invoke> def is file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/insert_person.wsdl
<2006-06-09 15:13:45,274> <DEBUG> <dev.collaxa.cube.ws> <WSIFInvocationHandler::invoke> opName=insert_person, parnterLink=<partnerLink name="PL_insert_person" partnerLinkType="{http://xmlns.oracle.com/pcbpel/adapter/db/insert_person/}insert_person_plt">
<myRole name="null">
<ServiceName>null</ServiceName>
<PortType>null</PortType>
<Address>null</Address>
</myRole>
<partnerRole name="insert_person_role">
<ServiceName>{http://xmlns.oracle.com/pcbpel/adapter/db/insert_person/}insert_person</ServiceName>
<PortType>{http://xmlns.oracle.com/pcbpel/adapter/db/insert_person/}insert_person_ptt</PortType>
<Address>null</Address>
</partnerRole>
<conversationId>bpel://localhost/dev/Ins_person_M2S~1.0/2414-BpInv2-BpSeq4.12-1</conversationId>
<properties>{}</properties>
</partnerLink>
<2006-06-09 15:13:45,274> <DEBUG> <dev.collaxa.cube.ws> <WSIFInvocationHandler::doShortCut> Parner Property optShortCut
<2006-06-09 15:13:45,277> <INFO> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/insert_person.wsdl [ insert_person_ptt::insert_person(InputParameters,OutputParameters) ] - Using JCA Connection Pool - max size = <unbounded>
<2006-06-09 15:13:45,277> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/insert_person.wsdl [ insert_person_ptt::insert_person(InputParameters,OutputParameters) ] - Looking up Resource Adapter JDNI location 'eis/DB/Slave'
<2006-06-09 15:13:45,278> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> Instantiating outbound JCA interactionSpec oracle.tip.adapter.db.DBStoredProcedureInteractionSpec
<2006-06-09 15:13:45,278> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> Populating outbound JCA interactionSpec oracle.tip.adapter.db.DBStoredProcedureInteractionSpec with properties: {ProcedureName=CREATE_PERSON, PackageName=XXAR_CUSOMER_WRAP_PKG}
<2006-06-09 15:13:45,299> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/insert_person.wsdl [ insert_person_ptt::insert_person(InputParameters,OutputParameters) ] - No XMLRecord headers provided
<2006-06-09 15:13:45,299> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/insert_person.wsdl [ insert_person_ptt::insert_person(InputParameters,OutputParameters) ] - Starting JCA LocalTransaction
<2006-06-09 15:13:45,299> <DEBUG> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/insert_person.wsdl [ insert_person_ptt::insert_person(InputParameters,OutputParameters) ] - Invoking JCA outbound Interaction
<2006-06-09 15:13:45,300> <DEBUG> <dev.collaxa.cube.ws> <Database Adapter::Outbound> <oracle.tip.adapter.db.TopLinkLogger log> client acquired
<2006-06-09 15:13:45,300> <DEBUG> <dev.collaxa.cube.ws> <Database Adapter::Outbound> <oracle.tip.adapter.db.TopLinkLogger log> begin transaction
<2006-06-09 15:13:45,302> <DEBUG> <dev.collaxa.cube.ws> <Database Adapter::Outbound> <oracle.tip.adapter.db.sp.AbstractStoredProcedure execute> BEGIN XXAR_CUSOMER_WRAP_PKG.CREATE_PERSON(P_PERSON_REC=>?, X_PARTY_ID=>?, X_PARTY_NUMBER=>?, X_PROFILE_ID=>?, X_RETURN_STATUS=>?, X_RETURN_MESSAGE=>?); END;
<2006-06-09 15:13:45,304> <ERROR> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/insert_person.wsdl [ insert_person_ptt::insert_person(InputParameters,OutputParameters) ] - Could not invoke operation 'insert_person' against the 'Database Adapter' due to:
ORABPEL-11811
Error while trying to prepare and execute an API.
An error occurred while preparing and executing the XXAR_CUSOMER_WRAP_PKG.CREATE_PERSON API. Cause: java.sql.SQLException: ORA-00902: invalid datatype
Check to ensure that the API is defined in the database and that the parameters match the signature of the API. Contact oracle support if error is not fixable.
at oracle.tip.adapter.db.sp.SPConstants.createResourceException(SPConstants.java:217)
at oracle.tip.adapter.db.sp.AbstractStoredProcedure.execute(AbstractStoredProcedure.java:104)
at oracle.tip.adapter.db.sp.SPInteraction.executeStoredProcedure(SPInteraction.java:95)
at oracle.tip.adapter.db.DBInteraction.executeStoredProcedure(DBInteraction.java:532)
at oracle.tip.adapter.db.DBInteraction.execute(DBInteraction.java:164)
at oracle.tip.adapter.fw.wsif.jca.WSIFOperation_JCA.executeRequestResponseOperation(WSIFOperation_JCA.java:458)
at com.collaxa.cube.ws.WSIFInvocationHandler.invoke(WSIFInvocationHandler.java:452)
at com.collaxa.cube.ws.WSInvocationManager.invoke2(WSInvocationManager.java:327)
at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:189)
at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__invoke(BPELInvokeWMP.java:601)
at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:317)
at com.collaxa.cube.engine.ext.wmp.BPELActivityWMP.perform(BPELActivityWMP.java:188)
at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:3408)
at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1836)
at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:75)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:166)
at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:252)
at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:5438)
at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:1217)
at com.collaxa.cube.engine.delivery.DeliveryService.handleInvoke(DeliveryService.java:511)
at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(CubeDeliveryBean.java:335)
at ICubeDeliveryLocalBean_StatelessSessionBeanWrapper16.handleInvoke(ICubeDeliveryLocalBean_StatelessSessionBeanWrapper16.java:1796)
at com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessageHandler.handle(InvokeInstanceMessageHandler.java:37)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:125)
at com.collaxa.cube.engine.dispatch.BaseScheduledWorker.process(BaseScheduledWorker.java:70)
at com.collaxa.cube.engine.ejb.impl.WorkerBean.onMessage(WorkerBean.java:86)
at com.evermind.server.ejb.MessageDrivenBeanInvocation.run(MessageDrivenBeanInvocation.java:123)
at com.evermind.server.ejb.MessageDrivenHome.onMessage(MessageDrivenHome.java:755)
at com.evermind.server.ejb.MessageDrivenHome.run(MessageDrivenHome.java:928)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:186)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.sql.SQLException: ORA-00902: invalid datatype
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:137)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:304)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:271)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:625)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:180)
at oracle.jdbc.driver.T4CCallableStatement.execute_for_rows(T4CCallableStatement.java:869)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1153)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2932)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3023)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4132)
at oracle.tip.adapter.db.sp.AbstractStoredProcedure.execute(AbstractStoredProcedure.java:92)
... 29 more
<2006-06-09 15:13:45,304> <ERROR> <dev.collaxa.cube.ws> <AdapterFramework::Outbound> file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/insert_person.wsdl [ insert_person_ptt::insert_person(InputParameters,OutputParameters) ] - Rolling back JCA LocalTransaction
<2006-06-09 15:13:45,305> <DEBUG> <dev.collaxa.cube.ws> <Database Adapter::Outbound> <oracle.tip.adapter.db.TopLinkLogger log> rollback transaction
<2006-06-09 15:13:45,306> <DEBUG> <dev.collaxa.cube.ws> <Database Adapter::Outbound> <oracle.tip.adapter.db.TopLinkLogger log> client released
<2006-06-09 15:13:45,306> <DEBUG> <dev.collaxa.cube.ws> <WSIFInvocationHandler::invoke> invoke failed
org.collaxa.thirdparty.apache.wsif.WSIFException: file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/insert_person.wsdl [ insert_person_ptt::insert_person(InputParameters,OutputParameters) ] - WSIF JCA Execute of operation 'insert_person' failed due to: Error while trying to prepare and execute an API.
An error occurred while preparing and executing the XXAR_CUSOMER_WRAP_PKG.CREATE_PERSON API. Cause: java.sql.SQLException: ORA-00902: invalid datatype
; nested exception is:
ORABPEL-11811
Error while trying to prepare and execute an API.
An error occurred while preparing and executing the XXAR_CUSOMER_WRAP_PKG.CREATE_PERSON API. Cause: java.sql.SQLException: ORA-00902: invalid datatype
Check to ensure that the API is defined in the database and that the parameters match the signature of the API. Contact oracle support if error is not fixable.
at oracle.tip.adapter.fw.wsif.jca.WSIFOperation_JCA.executeRequestResponseOperation(WSIFOperation_JCA.java:570)
at com.collaxa.cube.ws.WSIFInvocationHandler.invoke(WSIFInvocationHandler.java:452)
at com.collaxa.cube.ws.WSInvocationManager.invoke2(WSInvocationManager.java:327)
at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:189)
at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__invoke(BPELInvokeWMP.java:601)
at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:317)
at com.collaxa.cube.engine.ext.wmp.BPELActivityWMP.perform(BPELActivityWMP.java:188)
at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:3408)
at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1836)
at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:75)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:166)
at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:252)
at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:5438)
at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:1217)
at com.collaxa.cube.engine.delivery.DeliveryService.handleInvoke(DeliveryService.java:511)
at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(CubeDeliveryBean.java:335)
at ICubeDeliveryLocalBean_StatelessSessionBeanWrapper16.handleInvoke(ICubeDeliveryLocalBean_StatelessSessionBeanWrapper16.java:1796)
at com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessageHandler.handle(InvokeInstanceMessageHandler.java:37)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:125)
at com.collaxa.cube.engine.dispatch.BaseScheduledWorker.process(BaseScheduledWorker.java:70)
at com.collaxa.cube.engine.ejb.impl.WorkerBean.onMessage(WorkerBean.java:86)
at com.evermind.server.ejb.MessageDrivenBeanInvocation.run(MessageDrivenBeanInvocation.java:123)
at com.evermind.server.ejb.MessageDrivenHome.onMessage(MessageDrivenHome.java:755)
at com.evermind.server.ejb.MessageDrivenHome.run(MessageDrivenHome.java:928)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:186)
at java.lang.Thread.run(Thread.java:534)
Caused by: ORABPEL-11811
Error while trying to prepare and execute an API.
An error occurred while preparing and executing the XXAR_CUSOMER_WRAP_PKG.CREATE_PERSON API. Cause: java.sql.SQLException: ORA-00902: invalid datatype
Check to ensure that the API is defined in the database and that the parameters match the signature of the API. Contact oracle support if error is not fixable.
at oracle.tip.adapter.db.sp.SPConstants.createResourceException(SPConstants.java:217)
at oracle.tip.adapter.db.sp.AbstractStoredProcedure.execute(AbstractStoredProcedure.java:104)
at oracle.tip.adapter.db.sp.SPInteraction.executeStoredProcedure(SPInteraction.java:95)
at oracle.tip.adapter.db.DBInteraction.executeStoredProcedure(DBInteraction.java:532)
at oracle.tip.adapter.db.DBInteraction.execute(DBInteraction.java:164)
at oracle.tip.adapter.fw.wsif.jca.WSIFOperation_JCA.executeRequestResponseOperation(WSIFOperation_JCA.java:458)
... 25 more
Caused by: java.sql.SQLException: ORA-00902: invalid datatype
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:137)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:304)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:271)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:625)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:180)
at oracle.jdbc.driver.T4CCallableStatement.execute_for_rows(T4CCallableStatement.java:869)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1153)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2932)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3023)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4132)
at oracle.tip.adapter.db.sp.AbstractStoredProcedure.execute(AbstractStoredProcedure.java:92)
... 29 more
<2006-06-09 15:13:45,307> <DEBUG> <dev.collaxa.cube.ws> <WSIFInvocationHandler::invoke> Fault happened: file:/d01/oracle/as10g/integration/orabpel/domains/dev/tmp/.bpel_Ins_person_M2S_1.0.jar/insert_person.wsdl [ insert_person_ptt::insert_person(InputParameters,OutputParameters) ] - WSIF JCA Execute of operation 'insert_person' failed due to: Error while trying to prepare and execute an API.
An error occurred while preparing and executing the XXAR_CUSOMER_WRAP_PKG.CREATE_PERSON API. Cause: java.sql.SQLException: ORA-00902: invalid datatype
; nested exception is:
ORABPEL-11811
Error while trying to prepare and execute an API.
An error occurred while preparing and executing the XXAR_CUSOMER_WRAP_PKG.CREATE_PERSON API. Cause: java.sql.SQLException: ORA-00902: invalid datatype
Check to ensure that the API is defined in the database and that the parameters match the signature of the API. Contact oracle support if error is not fixable.Adding more to what 'Arcturus' has put across :
1) You can check your input & output arguments to a PL/SQL function/procedure using an assign activity, in which you tend to assign a source variable to a target variable.
Here, you can check to see, if the input & output to the DB Adapter are correct, if not, you can always recreate the adapter.
2) You can also check the schema of the PL/SQL function, to check if it has the right inputs & outputs.
It'd be a .xsd file in the format of <SCHEMA_NAME-OF-FUNCTION.xsd> viz. SCOTT_EMPDETAILS.xsd -
Custom PL/SQL API that inserts the data into a custom interface table.
We are developing a custom Web ADI integrator for importing suppliers into Oracle.
The Web ADI interface is a custom PL/SQL API that inserts the data into a custom interface table. We have defined the content, uploader and an importer. The importer is again a custom PL/SQL API that will process the records inserted into the custom table and updates the STATUS column of the custom interface table. We want to show the status column back on the spreadsheet.
Defined the 'Document Row' import rule and added the rows that would identify the unique record.
Errored row import rule, we are using a SELECT * from custom_table where status<>'Success' and vendor_name=$param$.vendor_name
The source of this parameter is import.vendor_name
We have also defined an Error lookup.
After the above setup is completed, we invoke the create document and click on Oracle->Upload.
The records are getting imported, but the importer program is failing with An error has occurred while running an API import. The ERRORED_ROWS step 20003:ER_500141, parameter number 1 must contain the value BIND in attribute 1.'The same issue.
Need help.
Also checked bne.log, no additional information.
<bne:document xmlns:bne="http://www.oracle.com/bne">
<bne:message bne:type="DATA" bne:text="BNE_VALID_ROW_COUNT" bne:value="11" />
<bne:message bne:type="DATA" bne:text="BNE_INVALID_ROW_COUNT" bne:value="0" />
<bne:message bne:type="ERROR" bne:text="An error has occurred while running an API import"
bne:cause="The ERRORED_ROWS step 20003:ER_500165, parameter number 1 must contain the value BIND in attribute 1."
bne:action="" bne:source="BneAPIImporter" >
<bne:context bne:collection="collection_1" />
</bne:message><bne:message bne:type="STATUS"
bne:text="No rows uploaded" bne:value="" >
<bne:context bne:collection="collection_1" /></bne:message>
<bne:message bne:type="STATUS" bne:text="0 rows were invalid" bne:value="" >
<bne:context bne:collection="collection_1" /></bne:message></bne:document> -
How to use the EBS PL/SQL API from outside PL/SQL
Hi,
our attempts to call the stored procedures/functions of the EBS PL/SQL API via JDBC revealed the following issues:
1. Logical values cannot be exchanged through boolean parameters as the OCI has no notion of this type. Instead we need to write PL/SQL wrappers converting boolean to integer and vice versa. Is that true or are we missing something?
2. Complex values cannot be exchanged through record types as only PL/SQL code has a notion of this type. Instead we need to write PL/SQL wrappers converting record values to object type values. Is that true or are we missing something?
3. Types must be defined outside of packages, i.e. in the schema, for whatever reason. Instead we need to write PL/SQL wrappers converting values of types defined in packages to values of types defined in the schema. Is that true or are we missing something?
4. It is possible to let functions return tables so the results can be queried using SELECT * FROM TABLE. Such functions are called "table functions". Is there something similar for the other direction, i.e. is it possible to call a stored procedure and pass in a table value through an sql INSERT statement?
5. Do we really have to write all those wrapper routines on our own or is there a PL/SQL library providing such? If not, is there some kind of code generation facility that can generate such wrappers?
Thanks and Regards,
KonradHi Helios,
I belive its better to move your issue on Forum Home » Database » SQL and PL/SQL which you can get more quick responseYou are probably right! I was thinking about a different forum but I did not see this one. I just posted the question there...
Still, if somebody has an idea here as well, just let me know ;-)
Konrad -
Defaulting Rules using PL/SQL Api - ORA error
Hi All,
Iam using the PLSQL api for OM defaulting rules. Based on the item in the Sales order line, Line type has to be defaulted.
I have put debug messages and iam able to see successful execution and the required Line type value is returned. No exception is raised.
Error ORA-06502 PL/SQL numberic to value error. Character to number conversion error is thrown outside the custom package.
PLSQL api is coded as below.
CREATE OR REPLACE PACKAGE BODY xx_default_ordertype IS
G_PKG_NAME CONSTANT VARCHAR2(30) := 'XX_DEFAULT_ORDERTYPE';
FUNCTION get_trans_type
p_database_object_name IN VARCHAR2,
p_attribute_code IN VARCHAR2
RETURN varchar2 IS
l_trans_type VARCHAR2(30);
-- l_item_id NUMBER := ONT_LINE_DEF_HDLR.g_record.ORDERED_ITEM_ID;
BEGIN
SELECT b.name
INTO l_trans_type
FROM OE_TRANSACTION_TYPES_tL b,
oe_transaction_types_all a
WHERE a.transaction_type_id=b.transaction_type_id
AND attribute1=ONT_LINE_DEF_HDLR.g_record.INVENTORY_ITEM_ID;
RETURN l_trans_type;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN l_trans_type;
WHEN OTHERS THEN
insert_sstab(7,'in exception');
IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'xx_default_ordertype');
END IF;
RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
END get_trans_type;
END xx_default_ordertype;
Not able to figure out where the ORA error is getting raised from.
Kindly help
Edited by: user11969666 on Mar 19, 2011 7:47 AMbtw, I did try your test and it didn't error for me:
CREATE OR REPLACE PACKAGE xx_default_ordertype IS
FUNCTION get_trans_type
p_database_object_name IN VARCHAR2,
p_attribute_code IN VARCHAR2
RETURN varchar2;
end xx_default_ordertype;
CREATE OR REPLACE PACKAGE BODY xx_default_ordertype IS
FUNCTION get_trans_type
p_database_object_name IN VARCHAR2,
p_attribute_code IN VARCHAR2
RETURN varchar2 IS
l_trans_type OE_TRANSACTION_TYPES_tL.name%TYPE :='a';
BEGIN
RETURN l_trans_type;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN l_trans_type;
END get_trans_type;
END xx_default_ordertype;
begin
dbms_output.put_line(xx_default_ordertype.get_trans_type('X','Y'));
end;
/
Maybe you are looking for
-
Hi experts, I am creating a node dynamically in WDDOINT and creating an input field in WDDOMODIFYVIEW , but am getting an error "attribute not found". Am pasting below my code... Code in WDDOINT of a view : data lr_par_node type ref to IF_WD_C
-
Transfer data from iphone 3g to ipad
how to transfer data, contact list, from iphone 3g to an ipad
-
Pricing for BP working in Foreign Currency only (differs from Sys. Curr.)
Hello, a vendor is setup with currency = Euro The issue is that when creating a marketing document the item price shows/loads is in USD ( The Total Doc is the total amount in Euro). When I go into the line item and change the Item Price it changes th
-
PC connecting to Xserve 10.5.8
When I try to connect to my xserve from a pc the login shows up as Machine/User. I only have user names setup on the server. Is there something I need to change on the PC or on the Xserve. I am running 10.5.8. I can turn on allow guest to get around
-
Core Center does not show up!
HI Guys, I have this problem while using Core Center. When I install it and restart my pc, my tasklist shows corecell with a processor usage of 50%, but is does not show up anywhere in my taskbar. The program is running, but I cannot see the screen.