Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用带有声明变量的标量值函数在select语句中的多个记录中运行_Sql_Sql Server_Sql Function - Fatal编程技术网

Sql 使用带有声明变量的标量值函数在select语句中的多个记录中运行

Sql 使用带有声明变量的标量值函数在select语句中的多个记录中运行,sql,sql-server,sql-function,Sql,Sql Server,Sql Function,你好 我有一个标量值函数,用于确定SQL Management Studio中Excel中的支付值PMT函数。我导入了以下C函数: using System; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; public partial class FinancialFunctions { [Microsoft.Sq

你好

我有一个标量值函数,用于确定SQL Management Studio中Excel中的支付值PMT函数。我导入了以下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
如何编写脚本来处理不同价值、利率和期限的多笔贷款

非常感谢您的帮助


谢谢。

创建一个包含函数所需所有值的表

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

我不太明白。如果你的意思是如何使用这是一个SELECT语句?然后像其他函数一样使用它。从表YT中选择{Other Columns}、dbo.PMTYT.APR、YT.FullTerm、YT.LoanValue、0,0作为PMT…谢谢@Larnu。我坐在这台笔记本电脑前太久了,以至于忘记了基本的脚本编写。先生,感谢您的帮助,并向我指出明显的问题。谢谢您,胡安,非常感谢您对这么琐碎的事情的帮助。