Simple PL/SQL code to throw NO_DATA_FOUND exception
Many ways, but as you suggested, you can use DUAL:

CREATE PROCEDURE NODATAFOUND
AS
   nowt VARCHAR(10);
BEGIN
   SELECT * INTO nowt FROM DUAL WHERE 1=0;
END;
/


It'll produce a ORA-01403: no data found when executed.