У меня есть эта таблица:
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++), и мне нужен он для возврата курсора. Как?