如何访问游标中的数据项???菜鸟

goodhy 2004-12-13 09:33:52
由于游标是根据输入参数传入的sql语句利用open..for ..语句动态产生的,所以在访问游标中的数据
就存在问题:因为产生游标的sql语句是变化的,因此游标中的数据项也是变化的,那么怎么样写菜能够访问游标中的数据项,而不用理会sql语句的变化。
...全文
151 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
CodeMagic 2004-12-13
  • 打赏
  • 举报
回复
CREATE PACKAGE cv_types AS
TYPE LibCurTyp IS REF CURSOR;
...
END cv_types;

CREATE PROCEDURE find_item (title VARCHAR2(100),lib_cv IN OUT cv_types.LibCurTyp) AS
code BINARY_INTEGER;
BEGIN
SELECT item_code FROM titles INTO code WHERE item_title = title;
IF code = 1 THEN
OPEN lib_cv FOR SELECT * FROM books WHERE book_title = title;
ELSIF code = 2 THEN
OPEN lib_cv FOR SELECT * FROM periodicals WHERE periodical_title = title;
ELSIF code = 3 THEN
OPEN lib_cv FOR SELECT * FROM tapes WHERE tape_title = title;
END IF;
END find_item;

DECLARE
lib_cv cv_types.LibCurTyp;
book_rec books%ROWTYPE;
periodical_rec periodicals%ROWTYPE;
tape_rec tapes%ROWTYPE;
BEGIN
get_title(:title); -- title is a host variable
find_item(:title, lib_cv);
FETCH lib_cv INTO book_rec;
display_book(book_rec);
EXCEPTION
WHEN ROWTYPE_MISMATCH THEN
BEGIN
FETCH lib_cv INTO periodical_rec;
display_periodical(periodical_rec);
EXCEPTION
WHEN ROWTYPE_MISMATCH THEN
FETCH lib_cv INTO tape_rec;
display_tape(tape_rec);
END;
END;
ORARichard 2004-12-13
  • 打赏
  • 举报
回复
好象不太可能,帮你UP吧。

楼主这个问题和ATGC的那个存储过程是连起来的吧。我觉得还是通过临时表的方法比较好

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧