J'ai ce tableau:Comment renvoyer un ensemble de résultats/curseur à partir d'un bloc anonyme Oracle PL/SQL qui exécute Dynamic 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');
En MSSQL, pour obtenir un curseur à partir d'un SQL dynamique que je peux faire:
DECLARE @v_sqlStatement VARCHAR(2000);
SET @v_Sqlstatement = 'SELECT * FROM ALLITEMS';
EXEC (@v_sqlStatement); --returns a resultset/cursor, just like calling SELECT
Dans Oracle, je besoin d'utiliser un bloc 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
Mais tout ce que je reçois est "bloc anonyme terminé".
Comment l'obtenir pour renvoyer le curseur?
(je sais que si je fais AUTOPRINT, il affichera les informations contenues dans refcursor (ce n'est pas l'impression dans le code ci-dessus, mais c'est un autre problème))
Je vais demander cette dynamique SQL à partir du code (ODBC, C++), et j'en ai besoin pour retourner un curseur.
Comment est-ce que je fais ceci? Je suis perplexe.
Merci! Je vais essayer ça. – Liao
@Peter Lang: Comment appelleriez-vous la fonction dans ce cas? – MissPiplup
@MissPiplup: J'ai réparé le lien cassé, est-ce que cela vous aide? –