Para este caso particular, y dado que aun estás en desarrollo, ¿por qué no le añades una CONSTRAINT a la tabla para que STOCK_ACTUAL > 0?
Con esto te ahorras la función PL/SQL y tu aplicación rendirá mucho más por:
- Te ahorras la llamada al nuevo PL/SQL.
- Si violas la constraint (vendes más de lo que tienes) puedes gestionar el error en tu EXCEPTION.
- Evitas una lectura de la tabla, con lo que eso conlleva (cálculo de plan de ejecución nuevo, parsing del SQL, lecturas de bufferes o peor aun: de disco).
- Pasas la lógica del negocio directamente a la BBDD.
Pero esto no es más que un punto de vista.
Un saludo.