Le variabili richiedono PL/SQL; non è chiaro dalla tua domanda se il tuo codice è un blocco PL/SQL corretto. In PL/SQL le variabili vengono popolate da query che utilizzano la sintassi INTO anziché la sintassi di assegnazione che stai utilizzando.
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;
Tuttavia, non è necessario utilizzare la sintassi della query. Questa è una pratica valida e migliore:
declare
n pls_integer;
begin
n := dbms_random.value(1,10);
end;