oracle 游标遍历问题

CREATEORREPLACEPROCEDUREP1(i_PhoneINVARCHAR2,--号码i_CodeINVARCHAR2,--编码i_CityIdINVARCH... CREATE OR REPLACE PROCEDURE P1( i_Phone IN VARCHAR2, --号码 i_Code IN VARCHAR2, --编码 i_CityId IN VARCHAR2, --地市编号 o_Code OUT NUMBER, --1 成功 0 失败 o_Message OUT VARCHAR2 --返回发送短信内容) IS v_Code NUMBER(2); --1 成功 0 失败 v_Message VARCHAR2(2000); --异常描述 v_Result SYS_REFCURSOR; --返回一个数据列表 TYPE rec IS RECORD(UNITID VARCHAR2, ELEMENTID VARCHAR2, UNITNAME VARCHAR2, UNITCODE VARCHAR2, RUNTYPE VARCHAR2, CITYID VARCHAR2, BEANID VARCHAR2, DYNPARAMS VARCHAR2, PARAM01 VARCHAR2, PARAM02 VARCHAR2, PARAM03 VARCHAR2, PARAM04 VARCHAR2, PARAM05 VARCHAR2, PARAM06 VARCHAR2, PARAM07 VARCHAR2, PARAM08 VARCHAR2, PARAM09 VARCHAR2, PARAM10 VARCHAR2, TAGID VARCHAR2, TAGNAME VARCHAR2, GROUPID VARCHAR2, GROUPNAME VARCHAR2); RESULTROW rec; (提示39) BEGIN P2(i_Phone,i_Code,i_CityId,v_Code,v_Message,v_Result); IF v_Code <> 1 THEN o_Code := 0; o_Message:= v_Message; END IF; IF v_Result%ISOPEN THEN CLOSE v_Result; END IF; --遍历 OPEN v_Result; LOOP FETCH v_Result INTO rec; EXIT WHEN v_Result%NOTFOUND; SELECT T.VALUE (提示60) FROM T1 T WHERE T.ID = rec.UNITID AND T.ISVALID = '1' END LOOP; (提示64) CLOSE v_Result; END P1; (提示65)
图片中的问题该怎么改呢?
展开
 我来答
pqzhanga
2014-02-24 · TA获得超过636个赞
知道小有建树答主
回答量:488
采纳率:50%
帮助的人:426万
展开全部
应该是存储过程里有异常没处理
在END P1;的前面加上这一句
EXCEPTION
  WHEN NO_DATA_FOUND THEN
RAISE exception_name;
END P1;
更多追问追答
追问
加了之后还是同样的异常
追答
1. EXIT WHEN v_Result%NOTFOUND;
SELECT T.VALUE (提示60)
FROM T1 T
WHERE T.ID = rec.UNITID
AND T.ISVALID = '1';--这里语句没结束,加个分号
END LOOP; (提示64)
2. -- RESULTROW rec; (提示39) --把这一行注释掉,没意义
3. TYPE rec IS RECORD(UNITID VARCHAR2(50), -- 给每个类型定义后边加个长度
ELEMENTID VARCHAR2(50),
UNITNAME VARCHAR2(50),
UNITCODE VARCHAR2(50),
RUNTYPE VARCHAR2(50),
CITYID VARCHAR2(50),
BEANID VARCHAR2(50),
DYNPARAMS VARCHAR2(50),
PARAM01 VARCHAR2(50),
PARAM02 VARCHAR2(50),
PARAM03 VARCHAR2(50),
PARAM04 VARCHAR2(50),
PARAM05 VARCHAR2(50),
PARAM06 VARCHAR2(50),
PARAM07 VARCHAR2(50),
PARAM08 VARCHAR2(50),
PARAM09 VARCHAR2(50),
PARAM10 VARCHAR2(50),
TAGID VARCHAR2(50),
TAGNAME VARCHAR2(50),
GROUPID VARCHAR2(50),
GROUPNAME VARCHAR2(50));
4. 剩下的就是你数据库中是否存在名为P2的函数或存储过程,名称为T1的表了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式