SQL Server 2000和2005版并没有提供很多金融函数,但是有很多金融计算公式的来源,在这篇技巧中,我将展示净现值(present value (PV))和未来值(future value (FV))函数,它们都是标量的用户自定义函数(UDF)。 Yq}gRs;q wzaBiN O4
其计算公式为: _Gck|'M
iw4")PH<~
FV = PV (1 + i)n [D~u<e N
m]_TdZ!Cx
当您将这一公式翻译为SQL Server函数的时候,您会得到列表B中所示的代码: `w
W]@4y=Rcu
-- ================================================ K.+] W
-- Template generated from Template Explorer using: KN]{+-(
-- Create Scalar Function (New Menu).SQL SJ70;4#Wa
-- c11gsyp/
-- Use the Specify Values for Template Parameters +%d|cm*
-- command (Ctrl-Shift-M) to fill in the parameter 2R}9g=
-- values below. 0j.8vP[x4
-- :=\8 ezX^
-- This block of comments will not be included in 6\ WLo
-- the definition of the function. `"(x#HjE
-- ================================================ ~Qz%OS)
SET ANSI_NULLS ON 2@C &CK
GO .K32lp8,
SET QUOTED_IDENTIFIER ON gJ9VkC}O
GO g)\zJd_3B"
-- ============================================= ;o{(!,h
-- Author: Arthur Fuller }j[$BRJ>
-- Create date: 22-Aug-2006 IilHxiw<
-- Description: Returns Future Value m po!
-- Example: dBb4.2#T
-- @fv = 100000 (dollars) lPyR w {
-- @i = 6% (per annum) -R^.J(h*
-- @p = 5 (years) S/FRp7
-- SELECT DBO.FV_fn( 150000, .06, 5) 0LSwIt>'U
-- returns 100000 ;.],5zG
-- ============================================= $n5BG ?#
CREATE FUNCTION FV_fn SOoD)EKU
( %5akR^
-- Add the parameters for the function here <Pp!8j5
@pv float, -- current amount in dollars I^n&Z3a
@i decimal, -- interest rate J}PjQ\O3
@p int -- number of compounding periods k&sf-\!Q
) V9?"h&1
RETURNS money ;31SVA$/
AS ndl0M#)Uq
BEGIN WP!o`-w}
-- Declare the return variable here ?8`-^|"US
DECLARE @Result money h]T"l~
-- Add the T-SQL statements to compute the return value here x7"FF`
SELECT @Result = @pv *Power((1+@i),@p) {U#rp?]-
-- Return the result of the function KPEpD# o0
RETURN @Result gp/Xk m(4E
END <$a.U]X
GO nE0rl38~
4}t+Y9l3
一旦您的手边拥有了公式,那么为应用软件创建函数就不再是一件困难的事情了,例如,如果值存储在表格中,您可以将它们作为参数传递给函数。 S<q7kcxE
R;?vn6