Skip to Main Content

DevOps, CI/CD and Automation

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Joining columns in a DataFrame with an Oracle table

user6410582Feb 2 2021

Hello,
Here's our situation:
We have to replace existing pl/sql code which contains dblinks, since the enterprise standards have ruled dblinks to be insecure. Right now we are exploring various options. One option is to use Python but before we do that, need to figure out if it will be able to satisfy one of our use cases.
The use case is as follows:

  1. Retrieve data from a driving table into a dataframe based on certain date criteria.
  2. Parse pipe delimited data in one of the columns in the dataframe and create new derived columns (in memory)
  3. Use the derived columns data in sql query to fetch additional data elements from another table in the source database
  4. Finally once all the required data elements are populated in dataframe, update a target table (in a different database than source)

Some things to note:

  1. We cannot create a temp table or any pl/sql procedures in source database. It is read only
  2. We are trying to avoid looping through every record in dataframe and fetch from another source table, as performance may not be acceptable
  3. Most Python examples I have seen online, suggest we get the data from both tables into separate dataframes and then merge (join?) this data in memory. However this may not work well, if the lookup tables (second table in use case above) is huge and has millions of records whereas we may need to retrieve only a few thousand based on criteria from first dataset.
    Any thoughts?
    Would appreciate suggestions from experts here, on how to implement this kind of logic in Python. Thank you.

Comments

Do you want to run it on the user-tier or the server? User-tier code is typically for doing things like interacting with the user's machine (e.g. opening Acrobat Reader, accessing hardware attached to user's machine, etc). Server side code is usually for doing things that do not use a UI and suppliment what Forms can process (e.g. retrieving data from a REST service, performing complex calculations where the result will be used by the application's PLSQL, etc).

User_OIR0O

Yes, i want to run it on user's machine.

So what you want is called a Forms Java Bean or Plugable Java Components (PJC). A Java Bean is typically used when you want to create your own widget or introduce something unrelated to Forms (e.g. HTML viewer). A PJC is typically used when you want to extend behavior that Forms already provides. For example if you didn't like the way the cursor appears in a Forms text item, you can use a PJC to change that behavior and/or appearance.
There are many example that can be found on the Internet.
https://www.google.com/search?q=oracle+forms+beans
Some information about creating a Java Bean and PJCs can be found in the Form Builder Help.
image.png

User_OIR0O

Thank you for giving me a answer,

After some research and studying oracle forms bean, a jar file need to create to implement java code in oracle bean.

I had create a my custom jar file using netbean tool (which i want to used on my forms) but it show that class not fond error when executing form.

A jar file is also placed in oracle/forms/java/ folder and also add configuration in frmcfg. File as per research .
But i can't find the way to make .jar which is accessible in oracle forms 12c version.

I execute examples files which is download from custom pjc demo. It is working well. But file not working.

You must stop the managed server before copying new files into /forms/java. If the file is already in the directory, stop the server and restart it. Note that the file must be declared in the Web Configuration (i.e. formsweb.cfg) but this must be edited using Fusion Middleware Control. Do not edit the file in a text editor. Also, if you are using Java Web Start, the entry must be made in extensions.jnlp which is found in /forms/java. Again, any changes to this directory will require server restart.

User_OIR0O

Yes, i followed all this steps but still it showing class not found error.

Verify that your JAR is being downloaded - look at the Java Console. If it is, consider the contents of your JAR. Are there sub-directories within it? If so, be sure you reference that path correctly in your form.

User_OIR0O

Thank you,
After adding jar file path into the classpath parameter in the default configuration file and restart the weblogic server it it now accessible and working properly.

I will guess and say that you did not mean "adding jar file path to classpath", but rather adding to ARCHIVE. In most cases, the server classpath has nothing to do with JARs used on the user-tier.

1 - 9

Post Details

Added on Feb 2 2021
0 comments
603 views