Page tree
Skip to end of metadata
Go to start of metadata

Ошибки 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;
  • No labels