tengo esta tabla:¿Cómo devolver un conjunto de resultados/cursor desde un bloque anónimo Oracle PL/SQL que ejecuta SQL dinámico?
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, me necesita utilizar 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 obtengo es "bloque anónimo completado".
¿Cómo obtengo que regrese el cursor?
(sé que si hago AUTOPRINT, se imprimirá la información en el REFCURSOR (éste no se imprime en el código anterior, pero eso es otro problema))
te llamaré este SQL dinámico de código (ODBC, C++), y necesito devolver un cursor.
¿Cómo hago esto? Estoy perplejo.
Gracias! Voy a intentar esto. – Liao
@ Peter Lang: ¿Cómo llamaría a la función en este caso? – MissPiplup
@MissPiplup: he arreglado el enlace roto, ¿esto te ayuda? –