Variabler kräver PL/SQL; det framgår inte av din fråga om din kod är ett riktigt PL/SQL-block. I PL/SQL fylls variabler från frågor som använder INTO-syntaxen snarare än den tilldelningssyntax du använder.
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;
Även om du inte behöver använda frågesyntaxen. Detta är giltigt och bättre praxis:
declare
n pls_integer;
begin
n := dbms_random.value(1,10);
end;