¿Cómo devolver un conjunto de resultados / cursor desde un bloque anónimo de Oracle PL / SQL que ejecuta Dynamic SQL?

Tengo esta mesa:

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

El 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');

En MSSQL, para obtener un cursor de un SQL dinámico que puedo hacer:

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

En Oracle, necesito usar un bloque 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

Pero todo lo que consigo es "bloque anónimo completado".
¿Cómo lo consigo para devolver el cursor?
(Sé que si hago AUTOPRINT, se imprimirá la información en el REFCURSOR (no se imprime en el código anterior, pero eso es otro problema))

Llamaré a este SQL dinámico desde el código (ODBC, C ++) y lo necesito para devolver un cursor.
¿Cómo hago esto? Estoy perplejo.

Respuestas a la pregunta(4)

Su respuesta a la pregunta