Ошибки Oracle
Q | При выполнении SELECT-запроса возникает ошибка ORA-14551: невозможно выполнение операции DML внутри запроса |
A | Данная ошибка говорит о том, что внутри вызываемой функции используется DML-операция, которая не разрешается СУБД из-за того, что функция вызывается в SELECT-запросе, то есть без транзакции. Чтобы избавиться от данной ошибки необходимо переписать вызов функции с использованием PL/SQL. Например: SELECT SI_ADDRESSES_PKG_S.NUMBER_TO_IP_ADDRESS(SI_ADDRESSES_PKG_S.GET_FREE_IP_ADDRESS(62118801, 100)) VC_CODE FROM DUAL; Должно быть: DECLARE num_N_VALUE SI_V_ADDRESSES.N_VALUE%TYPE; vch_VC_CODE SI_V_ADDRESSES.VC_CODE%TYPE; BEGIN num_N_VALUE := SI_ADDRESSES_PKG_S.GET_FREE_IP_ADDRESS( num_N_SUBNET_ADDR_ID => 62118801, num_N_PROVIDER_ID => 100); vch_VC_CODE := SI_ADDRESSES_PKG_S.NUMBER_TO_IP_ADDRESS(num_N_VALUE); END; |