Tôi có bảng này:Cách trả về kết quả/con trỏ từ khối ẩn danh Oracle PL/SQL thực thi SQL động?
ALLITEMS
---------------
ItemId | Areas
---------------
1 | EAST
2 | EAST
3 | SOUTH
4 | WEST
Các 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');
Trong MSSQL, để có được một con trỏ từ một SQL năng động, tôi có thể làm:
DECLARE @v_sqlStatement VARCHAR(2000);
SET @v_Sqlstatement = 'SELECT * FROM ALLITEMS';
EXEC (@v_sqlStatement); --returns a resultset/cursor, just like calling SELECT
Trong Oracle, tôi cần sử dụng một khối 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
Nhưng tất cả những gì tôi nhận được là "khối ẩn danh đã hoàn tất".
Làm cách nào để đưa nó trở lại con trỏ?
(Tôi biết rằng nếu tôi làm AUTOPRINT, nó sẽ in ra các thông tin trong REFCURSOR (nó không in trong đoạn mã trên, nhưng thats một vấn đề khác))
tôi sẽ gọi này SQL động từ mã (ODBC, C++), và tôi cần nó để trả về một con trỏ.
Làm cách nào để thực hiện việc này? Tôi bối rối.
Cảm ơn! Tôi sẽ thử cái này. – Liao
@Peter Lang: Bạn sẽ gọi hàm như thế nào trong trường hợp này? – MissPiplup
@MissPiplup: Tôi đã sửa liên kết bị hỏng, điều này có giúp ích cho bạn không? –