Как возвратить набор результатов / курсор из МН Oracle / 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 я должен использовать МН Блок / Блок 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++), и мне нужен он для возврата курсора. Как?

23
задан ΩmegaMan 16 September 2019 в 20:40
поделиться