Funções com parâmetros OUT são difíceis de entender. É impossível dizer se um parâmetro é de entrada ou saída apenas olhando para a chamada da função Além disso, funções com parâmetros OUT não podem ser chamadas por SQL.

Código em desconformidade

CREATE OR REPLACE FUNCTION get_product_info(id IN NUMBER, value OUT NUMBER) RETURN VARCHAR2 IS
BEGIN
 ...
END;