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

非著名魔兽解说 发布于 2016/09/17 08:55
阅读 606
收藏 0
SQL

@IdleMan 你好,想跟你请教个问题:

我的存储过程提示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行存储过程的代码就没了,请问如何处理?哪部分语句不对?请指教!谢谢!辛苦了!

粗无哦提示为:

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

加载中
0
0
0808xyj

第28行 IF V_PAGE_NO ="" or V_PAGE_NO is null  后面缺少 then ,所有的if 后面 都缺少 then

语法是 

if ... then

end if;

非著名魔兽解说
非著名魔兽解说
嗯,按照你说的,修该了,不过还是报那个错误。
0
IdleMan
IdleMan
 IF V_JSON_STR is not JSON THEN
这个不对吧
非著名魔兽解说
非著名魔兽解说
您说的那段代码注释掉了,如代码所示,但是现在还是出图片那个错误。
0
IdleMan
IdleMan

引用来自“IdleMan”的评论

 IF V_JSON_STR is not JSON THEN
这个不对吧
反正你粘贴的代码是没问题。
返回顶部
顶部