Les variables nécessitent PL/SQL ; il n'est pas clair d'après votre question si votre code est un bloc PL/SQL approprié. En PL/SQL, les variables sont remplies à partir de requêtes utilisant la syntaxe INTO plutôt que la syntaxe d'affectation que vous utilisez.
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;
Cependant, vous n'avez pas besoin d'utiliser la syntaxe de requête. C'est valable, et c'est une meilleure pratique :
declare
n pls_integer;
begin
n := dbms_random.value(1,10);
end;