新建存储过程提示PLS-00182,PLS-00103的问题如何处理?

非著名魔兽主持人 2016-09-17 09:17:04
我的存储过程提示PLS-00182,PLS-00103的错误,存储过程的代码一共有142行,创建存储过程时,只显示了前20行就没了,请问如何处理?

存储过程全部代码如下:
/*************************************************************************

* 存储过程名称: PR_ECOS_CUSTBACK_MAIN
* 存储过程功能: 用户中差评登记表涉及的ECOS_Op_CustFeedBack_Detail表与ECOS_Op_CustFeedBack_Head表,
* 以上2个表所关联的页面根据3个输入参数:
* 1:页面Number
* 2:页面Number对应的功能方法ID
* 3:前端传到后台的JSON字符串
* 分别调用不同的子存储过程
* 存储过程执行实例: EXEC PR_ECOS_CUSTBACK_MAIN '001','insert','{JSON字符串}'

*************************************************************************/

CREATE OR REPLACE PROCEDURE "PR_ECOS_CUSTBACK_MAIN"
( V_PAGE_NO IN VARCHAR2,--页面Number
V_FUN_ID IN VARCHAR2,--页面Number,对应的功能方法ID
V_JSON_STR IN VARCHAR2,--前端传到后台的JSON字符串
V_OU_RETURN OUT VARCHAR2,----成功返回OK 失败返回ERROR,输出参数也是要传递的,初始化时传空''即可
V_OU_MSG OUT VARCHAR2,--成功返回空,失败返回失败原因,输出参数也是要传递的,初始化时传空''即可
V_OU_JSON OUT CLOB --返回的JSON字符串,输出参数也是要传递的,初始化时传空''即可
)

IS
V_RETURN VARCHAR2(100);
V_HEAD_JSON CLOB;

BEGIN
IF V_PAGE_NO = "" or V_PAGE_NO is null THEN
V_OU_RETURN := 'ERROR';
V_OU_MSG := '页面Number不能为空!';
RETURN;
END IF;

IF V_FUN_ID = "" or V_FUN_ID is null THEN
V_OU_RETURN := 'ERROR';
V_OU_MSG := '页面Number对应的功能方法ID不能为空!';
RETURN;
END IF;

IF V_JSON_STR = "" or V_JSON_STR is null THEN
V_OU_RETURN := 'ERROR';
V_OU_MSG := '前端传到后台的JSON字符串不能为空!';
RETURN;
END IF;

IF V_JSON_STR is not JSON THEN
V_OU_RETURN := 'ERROR';
V_OU_MSG := '前端传到后台的JSON字符串格式不对!';
RETURN;
END IF;

IF V_PAGE_NO = '001' and V_FUN_ID ='insert' THEN --中差评ECOS_Op_CustFeedBack_Head表新增
PR_ECOS_CUSTBACK_HEAD_INSERT(V_PAGE_NO,V_FUN_ID,V_JSON_STR,V_RETURN);
IF V_RETURN <> 'OK' THEN
V_OU_RETURN := 'ERROR';
V_OU_MSG := V_RETURN;
RETURN;
END IF;
END IF;

IF V_PAGE_NO = '001' and V_FUN_ID ='delete' THEN --中差评ECOS_Op_CustFeedBack_Head表删除
PR_ECOS_CUSTBACK_HEAD_DELETE(V_PAGE_NO,V_FUN_ID,V_JSON_STR,V_RETURN);
IF V_RETURN <> 'OK' THEN
V_OU_RETURN := 'ERROR';
V_OU_MSG := V_RETURN;
RETURN;
END IF;
END IF;

IF V_PAGE_NO = '001' and V_FUN_ID ='update' THEN --中差评ECOS_Op_CustFeedBack_Head表修改
PR_ECOS_CUSTBACK_HEAD_UPDATE(V_PAGE_NO,V_FUN_ID,V_JSON_STR,V_RETURN);
IF V_RETURN <> 'OK' THEN
V_OU_RETURN := 'ERROR';
V_OU_MSG := V_RETURN;
RETURN;
END IF;
END IF;

IF V_PAGE_NO = '001' and V_FUN_ID ='select' THEN --中差评ECOS_Op_CustFeedBack_Head表查询
PR_ECOS_CUSTBACK_HEAD_QUERY(V_PAGE_NO,V_FUN_ID,V_RETURN,V_HEAD_JSON);
IF V_RETURN <> 'OK' THEN
V_OU_RETURN := 'ERROR';
V_OU_MSG := V_RETURN;
V_OU_JSON := V_HEAD_JSON;
RETURN;
END IF;
END IF;

IF V_PAGE_NO = '002' and V_FUN_ID ='insert' THEN --中差评ECOS_Op_CustFeedBack_Detail表新增
PR_ECOS_CUSTBACK_DETAIL_INSERT(V_PAGE_NO,V_FUN_ID,V_JSON_STR,V_RETURN);
IF V_RETURN <> 'OK' THEN
V_OU_RETURN := 'ERROR';
V_OU_MSG := V_RETURN;
RETURN;
END IF;
END IF;

IF V_PAGE_NO = '002' and V_FUN_ID ='delete' THEN --中差评ECOS_Op_CustFeedBack_Detail表删除
PR_ECOS_CUSTBACK_DETAIL_DELETE(V_PAGE_NO,V_FUN_ID,V_JSON_STR,V_RETURN);
IF V_RETURN <> 'OK' THEN
V_OU_RETURN := 'ERROR';
V_OU_MSG := V_RETURN;
RETURN;
END IF;
END IF;

IF V_PAGE_NO = '002' and V_FUN_ID ='update' THEN --中差评ECOS_Op_CustFeedBack_Detail表修改
PR_ECOS_CUSTBACK_DETAIL_UPDATE(V_PAGE_NO,V_FUN_ID,V_JSON_STR,V_RETURN);
IF V_RETURN <> 'OK' THEN
V_OU_RETURN := 'ERROR';
V_OU_MSG := V_RETURN;
RETURN;
END IF;
END IF;

IF V_PAGE_NO = '002' and V_FUN_ID ='select' THEN --中差评ECOS_Op_CustFeedBack_Detail表查询
PR_ECOS_CUSTBACK_DETAIL_QUERY(V_PAGE_NO,V_FUN_ID,V_JSON_STR,V_RETURN);
IF V_RETURN <> 'OK' THEN
V_OU_RETURN := 'ERROR';
V_OU_MSG := V_RETURN;
RETURN;
END IF;
END IF;

COMMIT;
V_OU_RETURN := 'OK';


EXCEPTION
WHEN OTHERS THEN
V_OU_RETURN := 'ERROR';
V_OU_MSG := '失败,原因是:' || SQLERRM;
ROLLBACK;
INSERT INTO SYS_ERROR_LOG
(ROW_ID, PR_NAME, ERROR_DESC, INSDT)
VALUES
(SYS_ERROR_LOG_SEQ.NEXTVAL, 'PR_ECOS_CUSTBACK_MAIN', V_OU_MSG, SYSDATE);
COMMIT;


END PR_ECOS_CUSTBACK_MAIN;


但是建完后提示下图:

只显示了前20行存储过程的代码就没了,请问如何处理?哪部分语句不对?请指教!谢谢
...全文
263 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2016-09-18
  • 打赏
  • 举报
回复
-- 把 这个双引号,改成单引号,再重建一下这个过程,下面还有好几处
    IF V_PAGE_NO = "" or V_PAGE_NO is null THEN
ghx287524027 2016-09-18
  • 打赏
  • 举报
回复
引用 7 楼 songjia344 的回复:
[quote=引用 6 楼 songjia344 的回复:] [quote=引用 5 楼 wmxcn2000 的回复:] [quote=引用 3 楼 songjia344 的回复:] if这部分是没有村务的都有then 与if对应
你发这个图片,这个 if 语句,就没有 then 关键字。 你再重新建立一下这个过程;[/quote] 现在有then了,但是代码建到21行就没了,如下图: [/quote] 方便的话,把你完整源码贴上来,别截图。另外可以考虑重启一下环境试试
  • 打赏
  • 举报
回复
引用 6 楼 songjia344 的回复:
[quote=引用 5 楼 wmxcn2000 的回复:]
[quote=引用 3 楼 songjia344 的回复:]

if这部分是没有村务的都有then 与if对应


你发这个图片,这个 if 语句,就没有 then 关键字。


你再重新建立一下这个过程;[/quote]
现在有then了,但是代码建到21行就没了,如下图:
  • 打赏
  • 举报
回复
引用 5 楼 wmxcn2000 的回复:
[quote=引用 3 楼 songjia344 的回复:] if这部分是没有村务的都有then 与if对应
你发这个图片,这个 if 语句,就没有 then 关键字。 你再重新建立一下这个过程;[/quote] 截图确实显示的是没有then的,但是代码写的确实是有then的,建完then就没了,很奇怪,建了很多次都是说“PLS-00103:Encountered the symbol "end-of-file" when expecting one of the following: (begin case declare end exception exit for goto if loop mod null pragma raise return select update while with <an identifier><a double-quoted delimited-identifier><a bind variable><<continue close current delete fetch lock insert forall merge pipe purge”
  • 打赏
  • 举报
回复
最终问题是因为主存储过程调用的多个子存储过程有问题,导致这个主存储过程有问题,因此注释了这个主存储过程中的很多代码,把一个子存储过程给调试好以后,这个主的存储过程就运行起来了,感谢各位的帮助!
卖水果的net 2016-09-17
  • 打赏
  • 举报
回复
引用 3 楼 songjia344 的回复:
if这部分是没有村务的都有then 与if对应
你发这个图片,这个 if 语句,就没有 then 关键字。 你再重新建立一下这个过程;
ssqtjffcu 2016-09-17
  • 打赏
  • 举报
回复
用plsql连接创建试试?
  • 打赏
  • 举报
回复
引用 2 楼 wmxcn2000 的回复:
-- if 语句,你没有写 then 关键字

-- 应该这样写
if var = 0 then
    v_out := 1000 ; 
end if ; 
if这部分是没有村务的都有then 与if对应
卖水果的net 2016-09-17
  • 打赏
  • 举报
回复
-- if 语句,你没有写 then 关键字

-- 应该这样写
if var = 0 then
    v_out := 1000 ; 
end if ; 
time倾听下 2016-09-17
  • 打赏
  • 举报
回复
你可以试着走一下test,一条条走,看到哪执行不下去了,那一块就是出问题的地方

684

社区成员

发帖
与我相关
我的任务
社区描述
智能路由器通常具有独立的操作系统,包括OpenWRT、eCos、VxWorks等,可以由用户自行安装各种应用,实现网络和设备的智能化管理。
linuxpython 技术论坛(原bbs)
社区管理员
  • 智能路由器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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