Трудно представить вашу проблему.Конечно, нет ничего плохого в принципе в том, что вы делаете, и это работает в PL / SQL.
Вот ваши тестовые данные, слегка настроенные для запуска в моей БД:
SQL> INSERT INTO ACT_QUERY values(2139,2,'SELECT ''D'', DUMMY from dual');
1 row created.
SQL> select * from act_query
2 /
ID BLAH
---------- ----------
QRY_TXT
--------------------------------------------------------------------------------
2139 2
SELECT 'D', DUMMY from dual
SQL>
Давайте бросим!
SQL> begin
2 for r in (select * from
3
4 .
SQL> declare
2 v1 char(1);
3 v2 char(1);
4 begin
5 for r in (select * from act_query)
6 loop
7 execute immediate r.qry_txt into v1, v2;
8 dbms_output.put_line(r.qry_txt);
9 dbms_output.put_line('v1='||v1||'::v2='||v2);
10 end loop;
11 end;
12 /
SELECT 'D'as D, DUMMY from dual
v1=D::v2=X
PL/SQL procedure successfully completed.
SQL>
Итак, вам нужно объяснить ситуацию более подробно, используя cut'n'paste фактического результата.