Как вернуть набор результатов / курсор из анонимного блока Oracle PL / SQL, который выполняет динамический SQL?

У меня есть эта таблица:

ALLITEMS
---------------
ItemId  | Areas
---------------
1       | EAST
2       | EAST
3       | SOUTH
4       | WEST

DDL:

drop table allitems;

Create Table Allitems(ItemId Int,areas Varchar2(20));
Insert Into Allitems(Itemid,Areas) Values(1,'east');
Insert Into Allitems(ItemId,areas) Values(2,'east');
insert into allitems(ItemId,areas) values(3,'south');
insert into allitems(ItemId,areas) values(4,'east');

В MSSQL, чтобы получить курсор из динамического SQL, я могу сделать:

DECLARE @v_sqlStatement VARCHAR(2000);
SET @v_Sqlstatement = 'SELECT * FROM ALLITEMS';
EXEC (@v_sqlStatement); --returns a resultset/cursor, just like calling SELECT 

В Oracle мне нужно использовать блок PL / SQL:

SET AUTOPRINT ON;
DECLARE
 V_Sqlstatement Varchar2(2000);
 outputData SYS_REFCURSOR;
BEGIN
 V_Sqlstatement := 'SELECT * FROM ALLITEMS';
 OPEN outputData for v_Sqlstatement; 
End;
--result is : anonymous block completed

Но все, что я получаю, это «анонимный блок завершен».
Как мне заставить его вернуть курсор?
(Я знаю, что если я сделаю AUTOPRINT, он напечатает информацию в REFCURSOR (это не печать в коде выше, но это еще одна проблема))

Я буду вызывать этот динамический SQL из кода (ODBC, C ++), и мне нужно, чтобы он возвращал курсор.
Как мне это сделать? Я в тупике.

Ответы на вопрос(4)

Ваш ответ на вопрос