Использование функции скалярного значения с объявленными переменными для запуска нескольких записей в операторе выбора - PullRequest
0 голосов
/ 19 февраля 2019

Добрый день,

У меня есть функция скалярного значения, которую я использовал для определения значения платежа (функция PMT в Excel) в SQL Management Studio.Я импортировал следующую функцию C #:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;

public partial class FinancialFunctions
{
    [Microsoft.SqlServer.Server.SqlFunction]
    public static SqlDouble PMT(double r, int nper, double pv, double fv, int type)
    {
        double pmt;
        if (nper == 0)
            pmt = 0;
        else if (r == 0)
            pmt = (fv - pv) / nper;
        else
            pmt = r / (Math.Pow(1 + r, nper) - 1)
                * -(pv * Math.Pow(1 + r, nper) + fv);

        if (type == 1) pmt /= (1 + r);

        return pmt;
    }

Затем функция вызывается в SQL следующим образом:

DECLARE @LoanValue decimal(38,20)
DECLARE @APR decimal(20,15)
DECLARE @FullTerm int

SET @LoanValue     = VALUE of each individual loan
SET @APR           = INTEREST RATE for each individual loan
SET @FullTerm      = TOTAL TENURE for each loan

DECLARE @PMT decimal(38,20)

SET @PMT = dbo.PMT(@APR/12.0, @FullTerm, @LoanValue, 0, 0)

SELECT @PMT AS PMT

Как написать сценарий для запуска нескольких займов с различными значениями, процентамиставки и продолжительность?

Ваша помощь будет принята с благодарностью.

Спасибо.

1 Ответ

0 голосов
/ 19 февраля 2019

создать таблицу со всеми значениями, необходимыми для функции.

  SELECT LoanValue, APR, FullTerm, fv, type , 
         dbo.PMT(APR/12.0, FullTerm, LoanValue, fv, type) as result
  FROM YourTable
...