`
plankton13
  • 浏览: 798 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

function错误

阅读更多
昨天下班的时候,测试爆出一个错误:
问题出在下面这个functions的第九行:

CALCNPV functions:
CREATE OR REPLACE FUNCTION "GAOFEI"."CALCNPV"
(monthFv in number, recoveryExp in number, monthTime in number, irr in number) 
   RETURN number IS netRec number;
BEGIN
  if monthFv is null or recoveryExp is null or monthTime is null or irr is null then
    return null;
  end if;
  netRec := ISNULL_NUMBER(monthFv, 0) * (1 - ISNULL_NUMBER(recoveryExp, 0));
  return netRec / power(1 + ISNULL_NUMBER(irr, 0), ISNULL_NUMBER(monthTime, 0) / 12);


END;


拿出functions单独进行测试:
select CALCNPV(dv.VALUE_FINAL, dv.RECOVERY_EXP, dv.RECOVERY_TIME, p.IRR)
 as NPV from dual


有2条数据出错。分别测试:
Eg:
1. select CALCNPV(11111,null,null,11.11111) from dual

Error data:
select CALCNPV(1,0.11,3333,11.11111) from dual  -- 3333

POWER
返回n1的n2次方根

SQL 语句:
select CALCNPV(1,0.11,300,11.11111) from dual  -- 3333

结果:

CALCNPV(1,0.11,300,11.11111)              
------------------------------------------
0.0000000000000000000000000007409540738908

估计得到的值太小,控制一下monthTime就可以了。

测试得到临界值为monthTime>1395

改为新的functions:

CALCNPV functions:
CREATE OR REPLACE FUNCTION "GAOFEI"."CALCNPV"
(monthFv in number, recoveryExp in number, monthTime in number, irr in number)    
  
RETURN number IS netRec number;

BEGIN
  if monthFv is null or recoveryExp is null or monthTime is null or irr is null  
or monthTime > 1395 then

    return null;
  end if;
  netRec := ISNULL_NUMBER(monthFv, 0) * (1 - ISNULL_NUMBER(recoveryExp, 0));
  return netRec / power
   (1 + ISNULL_NUMBER(irr, 0), ISNULL_NUMBER(monthTime, 0) / 12);
END;


考虑了一下,加上限制,只是针对本条数据,如果其他的值很大。有可能也不会出错。
根本解决办法是把返回值加以验证。
分享到:
评论

相关推荐

    s-function函数,s-function函数定义放置错误,matlab

    在实际应用中,可能会遇到s-function定义放置错误的问题。这可能是因为回调函数定义不正确,或者在编写s-function代码时没有遵循MATLAB的语法和Simulink的接口规范。解决这些问题通常需要检查函数的输入输出参数、...

    s-function函数,s-function函数定义放置错误,matlab源码.zip

    本压缩包文件可能包含了一些关于S-Function函数定义放置错误及其解决方法的MATLAB源码示例。 首先,我们来深入理解S-Function的基本概念。S-Functions是由C、C++或MATLAB编写的,它们在Simulink中以模块的形式运行...

    flash与C#通信 CallFunction 出现COM组件错误的处理

    这种情况下,如果参数传递或数据格式处理不当,就可能导致`CallFunction`方法执行失败,并返回`HRESULT E_FAIL`这样的错误码。根据题目中的描述,主要涉及到两个关键点: 1. **参数格式化**:调用`CallFunction`时...

    MATLAB的S-Function教程

    S-Function需要具备良好的错误处理机制,以确保仿真过程的稳定性。 - **防超程代码**:添加代码以防止超出数组界限的情况发生。 - **SsSetErrorStatus的终止条件**:定义错误状态下的处理逻辑。 - **数组边界检查**...

    Jquery上传插件文件ajaxfileupload.js 修复版下载

    2:运行时报:jQuery.handleError is not a function 错误; 3:执行成功后,始终指向error方法处理,无法执行sucess方法; 解决方法: 1:无法带参数提交,只能上传文件; 原作者一定是把这个代码当作练习来写的,...

    S-FUNCTION 编写指导

    S-Function还需要考虑错误处理机制,确保在出现错误时能够正确地响应。例如,可以使用`ssSetErrorStatus`来报告错误,并控制Simulink仿真引擎的后续行为。 #### 结论 综上所述,S-Function是Simulink中一个非常...

    S-Function编写指导

    在S-Function中正确处理错误和异常是非常重要的: - **防超程代码**:防止溢出和其他数值问题。 - **SsSetErrorStatus的终止条件**:设置适当的错误处理机制。 - **数组边界检查**:避免数组访问越界。 #### S-...

    解决koa2 ctx.render is not a function报错问题

    最后,以上内容详细说明了如何解决Koa2应用中的ctx.render is not a function错误。遇到这类问题时,开发者应当首先考虑是否是中间件顺序配置不当导致的。了解并掌握中间件的执行机制,对于Koa框架的使用至关重要,...

    解决VS中This function or variable may be unsafe的安全检查错误.docx

    在Visual Studio中,开发者可能会遇到一个警告或错误,提示"This function or variable may be unsafe",这是由于Microsoft引入的安全开发生命周期(Security Development Lifecycle, SDL)检查机制。该机制旨在提高...

    解决VS中This function or variable may be unsafe的安全检查错误.pdf

    在Visual Studio(VS)开发环境中,当我们使用一些传统且可能引起安全问题的函数时,可能会遇到“此函数或变量可能不安全”的编译错误或警告。具体来说,这些安全检查错误通常是由于使用了诸如strcpy、scanf等老旧且...

    VC6.0的__FUNCTION__宏支持

    这个特性对于生成自动生成的日志或错误报告特别有用,因为它可以自动标识出错误发生的具体位置,而无需额外的编程工作。 例如,你可以这样使用`__FUNCTION__`宏: ```cpp #include void myFunction() { std::...

    S-Function函数编写

    为了确保S-Function的健壮性,需要实现适当的错误处理机制。例如,使用`SsSetErrorStatus`函数可以在检测到错误时终止仿真,并提供错误信息。 #### S-Function范例 本部分提供了多个S-Function的实际应用示例,...

    sfunction使用手册

    - **调试**:使用 MATLAB 的调试工具进行错误定位和修正。 ##### 4. 应用部署 - **模型验证**:在实际环境中验证模型的准确性和稳定性。 - **优化调整**:根据测试结果调整参数,优化性能。 - **发布部署**:完成...

    Matlab S-Function的编写

    ### Matlab S-Function的编写 #### S-Function概述 **S-Function**(系统函数)是一种强大而灵活的工具,用于扩展Simulink的功能。它允许用户定义自定义的算法和逻辑,这些算法和逻辑可以集成到Simulink模型中进行...

    MATLAB的S-Function编写指导

    - **错误处理**:正确处理运行时错误是保证S-Function可靠性的关键。Simulink提供了一些API函数来帮助开发者实现这一目标。 #### S-Function范例 - **连续状态的S-Function范例**:这类范例通常展示了如何实现基于...

    ajaxFileUpload 报这错jQuery.handleError is not a function

    当你遇到“jQuery.handleError is not a function”的错误时,这意味着在使用ajaxFileUpload过程中,程序尝试调用jQuery的一个错误处理方法,但这个方法在当前版本的jQuery中并未定义。这个问题通常出现在从较旧的...

    abap 函数大全 abap function

    5. 错误处理与日志:FUNCTION MODULE 'RAISE_EXCEPTION'用于抛出异常,便于程序捕获错误并进行处理。FUNCTION MODULE 'LOG-TO-FILE'可将信息写入日志文件,用于调试和问题排查。 6. 远程通信:SAP的RFC(Remote ...

    S-Function 的编写.rar

    错误处理 89 防超程代码... 89 SsSetErrorStatus 的终止条件..... 90 数组边界检查.......... 90 S-FUNCTION 范例........ 91 连续状态的 S-Function 范例........ 92 离散状态的 S-Function 范例........ 93 ...

    function_exists函数详解

    此时,可以先使用 `function_exists()` 来确保该函数已被定义,避免运行时错误。 2. **框架或类库兼容性检测**:在编写可复用的代码模块时,可能会依赖于某些特定的函数。通过使用 `function_exists()` 可以确保...

Global site tag (gtag.js) - Google Analytics