jc_molconvert in TRIGGER or PLSQL not working

User 773d472e7f

01-10-2013 08:47:07

I am converting a trigger from Accelrys Direct cartridge function to JChem Cartridge  Function


My system is : WS 2012 64 bit   |  16GB RAM   |   Oracle 11.2g | JChem 6.1


I get  invalid use of function when I try to compile this PLSQL:


The error producing code is coloured red:


TRIGGER "AKOS_SAMPLES"."TBIU_AKOS_MOLTABLE" 
BEFORE INSERT OR UPDATE ON "AKOS_MOLTABLE"
FOR EACH ROW
DECLARE

pCTAB_CLOB clob;
pinchi varchar2(32767);

BEGIN
IF (INSERTING) THEN
-- generate cdbregno
SELECT AKOS_CDBREGNO_SEQ.NEXTVAL INTO :NEW.CDBREGNO FROM DUAL;
-- generate AKos Number
SELECT AKOS_REGISTRATION.CreateAKOS_Number into :NEW.AKOS_Number from dual;
-- generate date added
SELECT CURRENT_DATE INTO :NEW.DATE_ADDED FROM DUAL;
--set PUBLISHED flag to 'N'
:NEW.PUBLISHED := 'N';
END IF;

-- generate date updated
IF (UPDATING) THEN
SELECT CURRENT_DATE INTO :NEW.DATE_UPDATED FROM DUAL;
END IF;

-- generate derived data
IF (INSERTING OR UPDATING('CTAB_CLOB')) THEN
:NEW.MOLWEIGHT := jc_molweight(:NEW.CTAB_CLOB);
:NEW.MOLFORMULA := jc_formula(:NEW.CTAB_CLOB);
:NEW.INCHI := jc_molconvert(:NEW.CTAB_CLOB, 'inchi');
:NEW.INCHIKEY := jc_molconvert(:NEW.CTAB_CLOB, 'inchikey');
:NEW.SMILES := jc_molconvert(:NEW.CTAB_CLOB, 'smiles');

END IF;


END;



Please note that calling these functions in sql works fine for example:


select jc_molconvert(CTAB_CLOB, 'smiles') from akos_moltable where akos_number = 'AKOS016036757';
JC_MOLCONVERT(CTAB_CLOB,'SMILES')
--------------------------------------------------------------------------------
[H][C@@]12C[C@](C)(CC[C@]1(C)CC[C@]1(C)C2=CC(=O)[C@]2([H])[C@@]3(C)CC[C@H](O)C(C

 


Please advise where I have gone wrong.


 


Many thanks.


 


Bernard.

ChemAxon 61b4fee994

01-10-2013 09:18:00

Hi,


In PL/SQL blocks like triggers and methods, you can only use the functional equivalent of these operators. They are available in the jcf package without the jc_ prefix. In your case for example you have to replace the operators with jcf.molweight, jcf.formula and jcf.molconvert respectively.


Regards,


Tamas

User 773d472e7f

01-10-2013 09:45:34

Now this is all working.


Thanks for the quick help!


regards,


Bernard