最好的方式来使用PL/SQL包游标从Pro*C
-
26-09-2019 - |
题
我有一个标定在PL/SQL,我想知道什么是最好的方式来使用它从亲C。通常对于一个标定在亲C您会做的事:
EXEC SQL DECLARE curs CURSOR FOR SELECT 1 FROM DUAL;
EXEC SQL OPEN curs;
EXEC SQL FETCH curs INTO :foo;
EXEC SQL CLOSE cusr;
我希望是相同的(或类似的)法会的工作对于包装的光标。例如,我有一个包MyPack,用一个声明
type MyType is record (X integer);
cursor MyCurs(x in integer) return MyType;
现在我有在我的亲*C码一相当不令人满意的片嵌入PL/SQL,打开了光标,并取等, 因为我不能获得第一种样式的法工作。使用的例子
EXEC SQL EXECUTE
DECLARE
XTable is table of MyPack.MyType;
BEGIN
OPEN MyPack.MyCurs(:param);
FETCH MyPack.MyCurs INTO XTable;
CLOSE MyPack.MyCurs;
END;
END-EXEC;
没有人知道,如果有更多的"纯粹的"Pro*C做法?
解决方案
它实际上将不会有太大的不同于你的第一个例子,只是确保你的光标的定义是在包装规范中并不包的身体。不"宣布"它只是去喜欢的东西:
数据库的目的:
create or replace package mypkg as
cursor mycur is
SELECT 1 FROM DUAL;
end;
在临*c:
EXEC SQL OPEN schema.mypkg.mycur;
EXEC SQL FETCH schema.mypkg.mycur INTO :foo;
EXEC SQL CLOSE schema.mypkg.mycur;
当然包将需要访问的oracle用户的连接等。如果软件包是用户所拥有的连接,或者是同义词,"架构。"不需要在临*c话。
其他提示
是的。做一个谷歌搜索一词REF CURSOR和你应该看到的例子是什么你想要做的。
不隶属于 StackOverflow