У меня есть курсор, определенный в PL / SQL, и мне интересно, как лучше всего использовать его из Pro C.Обычно для курсора, определенного в Pro 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;
Теперь в моем коде Pro * 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 подход?