ole2 を使用して、Oracle フォームから Excel 関数 (PMT() など) を実行し、結果を取得する方法を提案できますか??
3017 次
2 に答える
2
MS Excel の式に従って PMT 関数を計算する PL/SQL 関数を作成しました。
この最初の関数は将来の値を考慮しませんが、2 番目の関数は考慮します。
/* 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;
于 2017-03-09T17:27:20.780 に答える
0
フォームのネイティブ言語である 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
于 2012-03-02T08:47:10.623 に答える