Si está ejecutando todo lo que ha mostrado como un script, necesita un /
después de cada sección independiente del código PL/SQL:
CREATE OR REPLACE PROCEDURE getDBUSERByUserId(
p_userid IN DBUSER.USER_ID%TYPE,
o_username OUT DBUSER.USERNAME%TYPE,
o_createdby OUT DBUSER.CREATED_BY%TYPE,
o_createddate OUT DBUSER.CREATED_DATE%TYPE)
IS
BEGIN
SELECT USERNAME , CREATED_BY
INTO o_username, o_createdby
FROM DBUSER WHERE USER_ID = p_userid;
END;
/
DECLARE
o_username DBUSER.USERNAME%TYPE;
o_createdby DBUSER.CREATED_BY%TYPE;
o_date DBUSER.CREATED_DATE%TYPE;
BEGIN
GETDBUSERBYUSERID(1001,o_username,o_createdby,o_date);
DBMS_OUTPUT.PUT_LINE('username : ' || o_username);
DBMS_OUTPUT.PUT_LINE('createdby : ' || o_createdby);
END;
/
Esta documentación si es para SQL*Plus, pero también se aplica principalmente a SQL Developer.