У меня есть база данных с двумя таблицами, т. Е. (Installment и InstallmentPlan). В таблице рассрочки есть количество столбцов. Я хочу добавить одно новое вычисляемое имя столбца SurchargeCalculated (S C). Расчет для S C таков:
SC = (Installment.Amount * Installment.days * (InstallmentPlan.InstPercentage /365 /100))
Я создал пользовательскую функцию SurchargeCal, имеющую 3 параметра: Amount, days и InstPercentage. Проблема в том, что когда я добавляю вычисляемый столбец в таблицу взносов и оттуда вызываю скалярную функцию, для сакрального веселья c требуется параметр InstPercetage 2-й таблицы (InstallmentPlan). Я знаю, что рекомендуется использовать представление, но это усложнит мою проблему, так как я использую таблицу взносов в C#.
. Любая помощь будет чрезвычайно полезна.
Моя скалярная функция
USE [myDB]
GO
/****** Object: UserDefinedFunction [dbo].[SurchargeCal] Script Date: 17/02/2020 2:21:15 PM
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
ALTER FUNCTION [dbo].[SurchargeCal]
(
-- Add the parameters for the function here
@days as int,
@amount as money,
@surchargePerc as decimal
)
RETURNS decimal
AS
BEGIN
-- Declare the return variable here
DECLARE @result as decimal =0;
-- Add the T-SQL statements to compute the return value here
--SELECT <@ResultVar, sysname, @Result> = <@Param1, sysname, @p1>
if @days = 0
set @result = 0
else if (@days > 0 and @amount > 0)
set @result = (@days * @amount * (@surchargePerc/ 365 / 100))
else
set @result = 0
-- Return the result of the function
RETURN @result
END
, тогда ниже таблицы ADD команда XXXX является проблемой
USE [myDB]
GO
ALTER TABLE dbo.Installment
ADD SurchargeCalculated AS dbo.SurchargeCalc(days,Amount, XXXX) --where XXX should be InstPercenatage
GO