Вызов функции Excel из форм оракула - PullRequest
0 голосов
/ 29 сентября 2010

Может кто-нибудь подсказать, как я могу использовать ole2 для выполнения функции Excel (например, PMT ()) из форм оракула и получить результат ??

Ответы [ 2 ]

0 голосов
/ 09 марта 2017

Я создал функции PL / SQL, которые будут вычислять функцию PMT по формуле в MS Excel.

Эта первая функция не учитывает будущее значение, вторая -.

/* 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;
0 голосов
/ 02 марта 2012

Я бы просто воссоздал функцию PMT в PL / SQL, родном языке форм. Например. основано на 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
...