Променливите изискват PL/SQL; от въпроса ви не става ясно дали вашият код е правилен PL/SQL блок. В PL/SQL променливите се попълват от заявки, използващи синтаксиса INTO, а не синтаксиса за присвояване, който използвате.
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;
Въпреки това, не е необходимо да използвате синтаксиса на заявката. Това е валидно и е по-добра практика:
declare
n pls_integer;
begin
n := dbms_random.value(1,10);
end;