Well, what you wrote is invalid, but something like this isn't:
SQL> set serveroutput on
SQL> declare
2 l_ename emp.ename%type;
3 l_empno emp.empno%type;
4 begin
5 execute immediate 'select ename, empno from emp where ename = ''KING'''
6 into l_ename, l_empno;
7
8 dbms_output.put_line(l_ename ||' '|| l_empno);
9 end;
10 /
KING 7839
PL/SQL procedure successfully completed.
SQL>
You could have left it without the INTO clause, but - the result would go nowhere:
execute immediate 'select ename, empno from emp where ename = ''KING''';
Multiple execute immediate
s - why wouldn't they be possible?
SQL> begin
2 execute immediate 'create table test (id number, name varchar2(10))';
3 execute immediate 'create index i1_test_id on test (id)';
4 execute immediate 'drop table test';
5 end;
6 /
PL/SQL procedure successfully completed.
SQL>