欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

oracle 存储过程纠错,该如何处理

更新时间: 2014-01-05 02:16:29 责任编辑: Author_N1

 

Oracle 存储过程纠错
     (   V_PageNo in int,V_PageSize in int,V_Sql in nvarchar,V_Parms in nvarchar,V_OrderBy in nvarchar,      
V_TotalRow out int, V_PageCount out int      
)     
AS   
   
V_ErrorMessage nvarchar; 
V_ErrorSeverity INT;     
V_ErrorState INT;     
V_ERROR_LINE INT;     
V_ERROR_NUMBER INT;     
V_ERROR_MESSAGE nvarchar;     
     
V_rowNoBegin int;  
V_rowNoEnd int;     
     
V_SQLString nvarchar; 
V_SQLString_MAX nvarchar; 
V_ParmDefinition nvarchar;  
     
     
V_ErrorMessage := ' ';     
V_ErrorSeverity := 12;     
V_ErrorState := 1;     
     
     
IF LOWER(SUBSTRING(LTRIM(V_Sql),1, 6)) <> 'select'     
BEGIN     
V_ErrorMessage := '参数 V_Sql 的值必须以 select 开头。 %s' ;
RAISE_APPLICATION_ERROR (-20001,V_ErrorMessage||V_Sql) ;    
RETURN;     
END     
IF CHARINDEX ('order by', LOWER(V_Sql)) > 0     
BEGIN     
 V_ErrorMessage := '参数 V_Sql 的值不能包含 order by 子句。 %s' ;    
RAISE_APPLICATION_ERROR (-20002,V_ErrorMessage||V_Sql) ;    
RETURN;     
END     
     
IF LEN(V_OrderBy) < 1     
BEGIN     
 V_ErrorMessage := '参数 V_OrderBy 的值不能为空(它要用于 ROW_NUMBER 函数)。 %s'   ;  
RAISE_APPLICATION_ERROR (-20000,V_ErrorMessage||V_OrderBy) ;    
RETURN;     
END     
IF CHARINDEX ('order by', LOWER(V_OrderBy)) > 0     
BEGIN     
 V_ErrorMessage := '参数 V_OrderBy 的值不能包含‘ORDER BY 关键字’(它要用于 ROW_NUMBER 函数)。 %s'   ;  
RAISE_APPLICATION_ERROR (-20000,V_ErrorMessage||V_OrderBy) ;    
RETURN;     
END     
     
     
     
     
     
 V_rowNoBegin := (V_PageNo - 1) * V_PageSize   ;  
 V_rowNoEnd := V_rowNoBegin + V_PageSize    ; 
     
     
 V_TotalRow := 0     ;
 V_SQLString := GsPLUS.Fun_Intra_FormatSQLParm(V_sql, V_Parms, V_OrderBy)    ; 
IF (UPPER(LEFT(V_SQLString, 5)) := 'ERROR')     
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:16:29
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7854/
本文WWW.DOC100.NET DOC100.NET版权所有。