How to put result of SQL into bind variable

oracleplsql

I'm trying to put the result of the query into a bind variable like this, but doesn't work:

var teste number;
exec :teste := (select trunc(avg(e.salary),2) from hr.employees e);

How I make it to work? I don't want to use a PL/SQL block.

Best Answer

exec is a PL/SQL block:

SQL> var teste number
SQL> exec select trunc(avg(user_id)) into :teste from dba_users;

PL/SQL procedure successfully completed.

SQL> print :teste

     TESTE
----------
 447392453

It is the same as:

begin
  select trunc(avg(user_id)) into :teste from dba_users;
end;
/

SQL*Plus substitution variable:

SQL> column my_value new_value teste
SQL> select trunc(avg(user_id)) my_value from dba_users;

  MY_VALUE
----------
 447392453

SQL> define teste
DEFINE TESTE           =  447392453 (NUMBER)
SQL>