oracle金牌认证都没解决的问题哦~!!!!!

binghe7 2005-03-09 09:41:32
首先人工手动添加三条数据,然后再执行查询操作,导致查询结果报错,而且每次都是添加了三条或者三条以上时报错,两条或者一条的情况则正常,
具体代码如下:

CREATE OR REPLACE PACKAGE aaa
AS

TYPE typUserId IS TABLE OF m_user.user_id%TYPE
INDEX BY BINARY_INTEGER;
TYPE typUserNm IS TABLE OF m_user.user_nm%TYPE
INDEX BY BINARY_INTEGER;

TYPE typPostId IS TABLE OF m_post.post_id%TYPE
INDEX BY BINARY_INTEGER;
TYPE typPostNm IS TABLE OF m_post.post_nm%TYPE
INDEX BY BINARY_INTEGER;

·············

END;



CREATE OR REPLACE PACKAGE BODY aaa

AS
·············

FUNCTION FN_SEL_DATA(
iNumCount IN NUMBER,
iTypPostId IN typPostId,
iTypUnGetUserId IN typUserId,
iNumRecCnt OUT NUMBER,
iTypUserId OUT typUserId,
iTypUserNm OUT typUserNm,
iTypPostNm OUT typPostNm,
oVchrErrMsg OUT VARCHAR2 エラーメッセージ
) RETURN NUMBER
IS
カーソル
CURSOR CurUser
IS
SELECT
m_user.user_id,
m_user.user_nm,
m_user.post_id,
m_post.post_nm
FROM
m_user, m_post;

wkVchrUserId m_user.user_id%TYPE;
wkVchrUserNm m_user.user_nm%TYPE;
wkChrPostId m_user.post_id%TYPE;
wkVchrPostNm m_post.post_nm%TYPE;

wkNumIndex NUMBER := 0;
BEGIN

-- エラーメッセージ
oVchrErrMsg := 'FN_SEL_DATA';
--
iNumRecCnt := 0;

--
wkNumCount := iNumCount;
wkTypPostId := iTypPostId;

-- カーソルオープン
OPEN CurUser;

-- カーソルフェッチ
FETCH CurUser INTO wkVchrUserId,
wkVchrUserNm,
wkChrPostId,
wkVchrPostNm;

WHILE CurUser%NOTFOUND = FALSE LOOP

-- チェック
IF FN_CHECK_POST_ID (wkChrPostId) = TRUE THEN

--
wkNumIndex := wkNumIndex + 1 ;
iTypUserId(wkNumIndex) := wkVchrUserId;
iTypUserNm(wkNumIndex) := wkVchrUserNm;
iTypPostNm(wkNumIndex) := wkVchrPostNm;
END IF;

-- カーソルフェッチ
FETCH CurUser INTO wkVchrUserId,
wkVchrUserNm,
wkChrPostId,
wkVchrPostNm;
END LOOP;

·············

/
...全文
106 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangyan168168 2005-03-10
  • 打赏
  • 举报
回复
哦帮你顶吧!
binghe7 2005-03-10
  • 打赏
  • 举报
回复
100分了,这里没一个懂得吗?
binghe7 2005-03-09
  • 打赏
  • 举报
回复
楼上的什么意思?
sylmoon 2005-03-09
  • 打赏
  • 举报
回复
http://moonsoft.blogchina.com
binghe7 2005-03-09
  • 打赏
  • 举报
回复
补充:
客户端连接到数据库后,用Object Browser手动往表中添加3条以上数据。然后执行查询操作,把查询结果放到游标中,再把游标中的数据一条一条地赋到一维自定义表中(定义:TYPE typUserId IS TABLE OF m_user.user_id%TYPE
INDEX BY BINARY_INTEGER;

假设原表中有100条数据,当赋值到第103条时,数据库报数组溢出错误。但是INDEX BY BINARY_INTEGER定义的变量的下限应该是动态的,怎么会溢出呢,问题出在哪里呢?请各位指教。

3,492

社区成员

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

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