我在调用我创建的函数时遇到问题。非常感激任何的帮助。这是功能:
CREATE FUNCTION myFunction
(
@T DECIMAL(38,14),
@R DECIMAL (38,14),
@S DECIMAL(38,14)
)
RETURNS DECIMAL(38,14)
AS
BEGIN
RETURN
SQRT(
ABS(
(@T/(@R-1))-((@R/(@R-1))*(@S*@S))))
/@S
END
GO
然后我需要在表上使用此功能。这是填写'CV'列。这需要处理以下列:
@T Decimal (38,14) as SumSqJT
@R Decimal (38,14) as "SumObs"
@S Decimal (38,14) as "AvJT"
修改
这是我用过的功能
Use [Neutral Month 20132014 ALL]
SELECT
dbo.MyFunction(SumSqJT1, SumObs, AvJT) AS FunctionResult
FROM
Essex_Data_1314
WHERE
SumObs > 1
这会创建数字列表,但是我需要更新表Essex_Data_1314中的列CV,而不仅仅是创建数字列表。我该怎么做?
现在已经解决了这个问题:
Use [Neutral Month 20132014 ALL]
UPDATE
Essex_Data_1314
SET
CV = dbo.MyFunction(SumSqJT1, SumObs1, AvJT)
注意:将所有内容都设置为DECIMAL或NUMERIC数据类型非常重要。否则会发生转换错误。
感谢JohnnyBell的帮助。
干杯。
答案 0 :(得分:7)
我不确定问题是什么。或者如果有任何问题。如果您想知道如何调用您创建的函数,您需要执行以下操作:
SELECT MyFunction(@T,@R,@S)
显然用您希望通过该函数的值替换@ T,@ R,@ S.
如果要在表中的列上使用该函数,可以像这样引用函数调用中的列名:
SELECT
MyFunction(Column1, Column2, Column3) AS FunctionResult
FROM
MyTable
如果要使用这些结果更新列,可以使用UPDATE语句轻松完成此操作:
UPDATE
MyTable
SET
FunctionResult = MyFunction(Column1,Column2,Column3)
感谢。