I have a solution for : ORA-14551 WHILE CALLING FUNCTION IN SQL OVER DBLINK in 9i or 10g
Fisrt, Sorry for my english, i'm french !
Symptoms:
Instance 1 (I1)
owner's : O1, O2
dblink in O1 and O2 : host I2 and user_name O3
Instance 2 (I2)
owner : O3 , table TA, Function FCTA with update TA
Cause :
O1 call FCTA with synonym for O3.FCTA@I2
select fcta into :myVar from dual;
*
ERROR at line 1:
ORA-14551: cannot perform a DML operation inside a query
Solution :
1/ in O1, drop synonym (public and private) FCTA
2/ duplicate O3.FCTA in O1
3/ if you havn't : create synonym TA for O3.TA@I2
If O2 use too FCTA :
1/ in O2, drop synonym private FCTA
2 / create synonym FCTA for O1.FCTA