关于TYPE IS TABLE OF 的问题。高手请教。

zexunlee 2003-12-04 03:48:02
运行ORACLE文档中的一个程序如下:
DECLARE
TYPE DeptRecTab IS TABLE OF dept%ROWTYPE;
dept_recs DeptRecTab;
CURSOR c1 IS
SELECT deptno, dname, loc FROM dept WHERE deptno > 10;
BEGIN
OPEN c1;
FETCH c1 BULK COLLECT INTO dept_recs;
END;
/
产生如下错误:
PLS-00597: INTO 列表中的表达式 'DEPT_RECS' 类型错误。

提示是“FETCH c1 BULK COLLECT INTO dept_recs”发生了错误。在我的数据库中DEPT表是存在的,而且用户的权限足够。上述代码是原封不动拷贝下来的,但是还是发生错误。哪位仁兄可以指点一二?
...全文
4173 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zexunlee 2003-12-05
  • 打赏
  • 举报
回复
只是还有点疑惑。
TYPE DeptRecTab IS TABLE OF dept%ROWTYPE;
此句在语法上绝对没有错误的,但为什么总是通不过编译?我仍在继续测试,还有哪位仁兄继续参与帖子的探讨,还有分送出。而且按 leecooper0918的做法,是无法用FETCH BULK COLLECT INTO 语句来实现的,所以问题仍然没有彻底解决。
zexunlee 2003-12-05
  • 打赏
  • 举报
回复
呵呵,谢谢,多谢。其实我也想到了这个方法,而且也测试通过了。但没想到ORACLE文档里的己的代码都会出错,所以有点疑惑。分已送出。
yujiabian 2003-12-05
  • 打赏
  • 举报
回复
DeptRecTab dept%ROWTYPE;

如果你想使用PL/SQL表中的具体一列,再加上:

type new_deptno is table of dept.deptno%type
index by binary_integer;
强烈同意楼上的观点,狠狠的顶一下,不疼吧?:)
leecooper0918 2003-12-04
  • 打赏
  • 举报
回复

TYPE DeptRecTab IS TABLE OF dept%ROWTYPE;
----------------------------------------
这句话写错了:
直接写:DeptRecTab dept%ROWTYPE;

如果你想使用PL/SQL表中的具体一列,再加上:

type new_deptno is table of dept.deptno%type
index by binary_integer;




zexunlee 2003-12-04
  • 打赏
  • 举报
回复
deptno, dname, loc 已经是改表的所有字段,而且顺序也是正确的。
JiangHua0903 2003-12-04
  • 打赏
  • 举报
回复
SELECT * FROM dept WHERE deptno > 10;

3,492

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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