【问题标题】:Calling an excel function from oracle forms从 oracle 表单调用 excel 函数
【发布时间】:2010-09-28 21:27:33
【问题描述】:

谁能建议我如何使用 ole2 从 oracle 表单执行 excel 函数(例如 PMT())并取回结果??

【问题讨论】:

  • 您使用的是哪个版本的表单?这种集成在较旧的客户端/服务器实现 (4.5 - 6.5) 中非常简单,但在 Web 交付的版本中更加棘手。

标签: oracle excel oracleforms


【解决方案1】:

我创建了 PL/SQL 函数,这些函数将根据 MS Excel 中的公式计算 PMT 函数。

第一个函数不考虑未来值,第二个函数。

/* No future value factor */
FUNCTION pmt (APR     IN NUMBER /* Rate (APR) */,
                  pv      IN NUMBER /* Loan amount */,
                  nper    IN NUMBER /* number of payments */
                  ) RETURN NUMBER IS /* periodic payment amount */
BEGIN
    RETURN  (APR / (1 - power((1 + APR),-nper)) * pv );

END pmt;    

/* With future value factor */
FUNCTION pmt (APR    IN NUMBER, /* Rate (APR) */
              nper   IN NUMBER, /* Number of payments */
              pv     IN NUMBER, /* present value */
              fv     IN NUMBER  /*future value */
             ) RETURN NUMBER IS /* periodic payment amount */

  calcpmt NUMBER := 0;
  powercalc NUMBER:=0;
BEGIN

 powercalc:= POWER(1+APR, nper);
 RETURN APR / (powercalc - 1) * -(pv * powercalc + fv);

END;

【讨论】:

    【解决方案2】:

    我只想在表单的母语 PL/SQL 中重新创建 PMT 函数。例如。基于http://forums.contractoruk.com/technical/28716-calculate-apr-loan-repayment-using-pl-sql-java.html:

    CREATE
    FUNCTION pmt (rate     IN NUMBER /* Rate (APR) */
                 ,amt      IN NUMBER /* Loan amount */
                 ,payments IN NUMBER /* number of payments */
                 ) RETURN NUMBER IS /* periodic payment amount */
    BEGIN
      RETURN (rate/12*amt*power((1+rate/12),payments))/(power((1+rate/12),payments)-1);
    END pmt;
    

    例如

    BEGIN
      DBMS_OUTPUT.put_line(
       'PMT = $' || TRUNC( pmt(0.249, 5000, 11), 2)
      );
    END;
    /
    
    PMT = $513.07
    

    【讨论】:

      猜你喜欢
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 2011-08-06
      • 1970-01-01
      相关资源
      最近更新 更多