- 382.3K All Categories
- 2.1K Data
- 209 Big Data Appliance
- 1.9K Data Science
- 447.9K Databases
- 220.9K General Database Discussions
- 25 Multilingual Engine
- 520 MySQL Community Space
- 467 NoSQL Database
- 7.8K Oracle Database Express Edition (XE)
- 2.9K ORDS, SODA & JSON in the Database
- 492 SQLcl
- 3.9K SQL Developer Data Modeler
- 186.2K SQL & PL/SQL
- 21K SQL Developer
- 293.3K Development
- 7 Developer Projects
- 128 Programming Languages
- 290K Development Tools
- 95 DevOps
- 3K QA/Testing
- 645.5K Java
- 24 Java Learning Subscription
- 36.9K Database Connectivity
- 149 Java Community Process
- 104 Java 25
- 22.1K Java APIs
- 137.9K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 16 Java Essentials
- 144 Java 8 Questions
- 85.9K Java Programming
- 79 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.2K Java SE
- 13.8K Java Security
- 198 Java User Groups
- 265 LiveLabs
- 36 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.8K Other Languages
- 2.3K Chinese
- 166 Deutsche Oracle Community
- 1.2K Español
- 1.9K Japanese
- 229 Portuguese
User-Defined Callbacks on OpenVMS
I've been experimenting recently with User-Defined Callbacks (OCI Programming Advanced Topics) and I'm curious if they are supported on OpenVMS.
I've had no trouble getting the sample programs (cdemoucb.c and cdemoucbl.c) or my own code to work on Linux. The directions given in the link above for Solaris also work well on Linux. Basically, you just create the module, name it something like ucbtest.so.1.0 (with the .so.0.1 extension), copy it to $ORACLE_HOME/lib and set the environment variable ORA_OCI_UCBPKG=ucbtest.
Does anyone know if UCB's work on OpenVMS? If so, what's the trick?
I can create a shareable image. I can verify that it is possible to load functions from it using LIB$FIND_IMAGE_SYMBOL and run them. I can set either a symbol or a logical ORA_OCI_UCBPKG=ucbtest. I'm having trouble getting it to work from an OCI program though. In my test program, if the logical or symbol is set, then OCIEnvCreate fails with OCI_ERROR, even if OCI_NO_UCB is specified. If I use OCIInitialize, it also fails with OCI_ERROR.
Poking around in the Oracle libraries, I see the ORA_OCI_UCBPKG string, and since OCIEnvCreate/OCIInitialize fails, it would appear that they are actually trying to do something to load the module.
So, maybe I'm just doing something wrong.
* Should the module be created as a shareable image, or something else?
* Must the image be installed (using the INSTALL utility), or is it ok if it's not?
* How should the module be named? Files can't have more than 1 dot in their names on OpenVMS. I've tried the default of .EXE. I also tried .SO and .DLL, but no luck.
* Where should the module be located? The default location for shareable images on OpenVMS is SYS$SHARE. Should it go there, or in ORACLE_HOME:[lib]? Or somewhere else? I've tried all combinations of .EXE, .SO, .DLL and both of those locations, but nothing has worked so far.
* Should ORA_OCI_UCBPKG be a logical, a symbol, or something else?
* Are there any other logicals/symbols that need to be set too?
Any help that anyone could give me would be great.