User 1f0942440c
20-06-2005 19:46:11
After upgrade, I met this error messsage when conducting search...
ORA-29900: operator binding does not exist
ORA-06540: PL/SQL: compilation error
ORA-06553: PLS-907: cannot load library unit JCHEM.
CONTAINS_FUNC(reference by JCHEM.JC_CONTAINS)
Please help.
ChemAxon aa7c50abf8
21-06-2005 07:48:23
Did you execute the test.sh script as part of the installation of 3.0.12? Did it complete successfully?
Are you using JChem Cartridge in a schema different from the one where you installed it? Have you granted all the necessary privileges to the JChem Cartridge user?
ChemAxon aa7c50abf8
21-06-2005 15:48:26
I suggest to try and uninstall JChem Cartridge and reinstall it (3.0.12). Let me know if you see anything suspicious during uninstallation or installation.
User 1f0942440c
21-06-2005 16:10:08
I should use jcf_contains instead of jc_contains.
ChemAxon aa7c50abf8
22-06-2005 09:07:18
Whether you should use jcf_XXX instead of jc_XXX depends on where you need the given functionality. You will need jcf_XXX typically in PL/SQL procedures' bodies where the given functionality appears on the right side of an assignment instead of being part of a SQL statement. In such cases, you truly need a function instead of an operator. (Using an operator in such places in PL/SQL code results in a "PLS-00548: invalid use of operator." error message -- and not the error message you reported.)
On the other hand, in SQL statements you basically should always use an operator. Although a SQL statement like
Code: |
select count(*) from nci_1k where jcf_contains(structure, 'c1ccccc1') = 1 |
will execute and return the expected result, execution will be slower by orders of magnitude than if you used the corresponding operator (jc_contains).
However, in an SQL statement like
Code: |
select jcf_contains(structure, 'c1ccccc1') from nci_1k where id = 311 |
whether you use the function or the operator has no performance impact.
The error message in your original posting suggests that you have a real low-level problem with the CONTAINS_FUNC PL/SQL function. Based on the error message, your problem does not seem to be a jc_XXX versus jcf_XXX issue. My guess is that something went wrong during uninstallation or installation.
A loosely related issue is the following (related to the use of jcf_XXX versus jc_XXX). I observed that Oracle 9.2.0.4 will crash, if I use the jc_standardize operator in SQL statements of the second kind above. This problem does not occur with Oracle 10g.
Apropos, why do you use Oracle 9.2.0.1.0? This is a pretty unstable version in my experience. More recent 9i patches are much more stable (even though they are also slower than 9.2.0.1.0). (10g beats all 9i patches in stability in my experience.)
User 1f0942440c
23-06-2005 16:51:59
I think I figured out the problem. The uninstall script actually failed to delete the operators, so I have to delete them manually, now it is working very well.
By the way, I found
Code: |
select jc_molconvertbb(cd_smiles,'sdf -2') from ...
|
not working, is the syntax I'm using correct?
Thank you again for your help. pkovacs wrote: |
Whether you should use jcf_XXX instead of jc_XXX depends on where you need the given functionality. You will need jcf_XXX typically in PL/SQL procedures' bodies where the given functionality appears on the right side of an assignment instead of being part of a SQL statement. In such cases, you truly need a function instead of an operator. (Using an operator in such places in PL/SQL code results in a "PLS-00548: invalid use of operator." error message -- and not the error message you reported.)
On the other hand, in SQL statements you basically should always use an operator. Although a SQL statement like
Code: | select count(*) from nci_1k where jcf_contains(structure, 'c1ccccc1') = 1 |
will execute and return the expected result, execution will be slower by orders of magnitude than if you used the corresponding operator (jc_contains).
However, in an SQL statement like
Code: | select jcf_contains(structure, 'c1ccccc1') from nci_1k where id = 311 |
whether you use the function or the operator has no performance impact.
The error message in your original posting suggests that you have a real low-level problem with the CONTAINS_FUNC PL/SQL function. Based on the error message, your problem does not seem to be a jc_XXX versus jcf_XXX issue. My guess is that something went wrong during uninstallation or installation.
A loosely related issue is the following (related to the use of jcf_XXX versus jc_XXX). I observed that Oracle 9.2.0.4 will crash, if I use the jc_standardize operator in SQL statements of the second kind above. This problem does not occur with Oracle 10g.
Apropos, why do you use Oracle 9.2.0.1.0? This is a pretty unstable version in my experience. More recent 9i patches are much more stable (even though they are also slower than 9.2.0.1.0). (10g beats all 9i patches in stability in my experience.) |
ChemAxon aa7c50abf8
23-06-2005 17:10:16
jc_molconvertbb takes a BLOB column as its first argument. Use cd_structure instead of cd_smiles.
Note, that the cd_structure column must be of type BLOB (instead of the traditional LONG RAW) and a jc_idxtype index must exist on cd_structure.