Las variables requieren PL/SQL; no está claro a partir de su pregunta si su código es un bloque PL/SQL adecuado. En PL/SQL, las variables se completan a partir de consultas utilizando la sintaxis INTO en lugar de la sintaxis de asignación que está utilizando.
declare
txt varchar2(128);
n pls_integer;
begin
-- this is how to assign a literal
txt := 'your message here';
-- how to assign the output from a query
SELECT dbms_random.value(1,10) num
into n
FROM dual;
end;
Aunque, no necesita usar la sintaxis de consulta. Esta es una práctica válida y mejor:
declare
n pls_integer;
begin
n := dbms_random.value(1,10);
end;