Q:

Stored procedure expects parameter when no IN parameters are defined

I have this very simple stored procedure in Oracle that executes a sequence and gives the next sequence number as output.
create or replace PROCEDURE NEXT_NUMBER
(SEQUENCE_OUT OUT NUMBER)
IS
BEGIN
EXECUTE IMMEDIATE 'SELECT TEST_SEQUENCE.NEXTVAL FROM DUAL' INTO sequence_out;
END;

As you can see, there are no IN parameters to this procedure so I'm puzzled when I execute this procedure like this: execute CRS_NEXT_CRC_NUMBER;
and I get the following error:
Error starting at line : 1 in command -
execute NEXT_NUMBER
Error report -
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'CRS_NEXT_CRC_NUMBER'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

Any idea why this could be happening? I can call the NEXTVAL function on the SEQUENCE outside of the procedure without a problem.

A:

create or replace PROCEDURE NEXT_NUMBER
(SEQUENCE_OUT OUT NUMBER)
IS
BEGIN
  SELECT TEST_SEQUENCE.NEXTVAL INTO sequence_out FROM DUAL;
  -- or simply (in newer Oracle releases)
  sequence_out := TEST_SEQUENCE.NEXTVAL;
END;

In SQLPLUS:
> var ID NUMBER
> exec NEXT_NUMBER(:ID);
> print ID

