SQL创建函数

时间:2015-04-16 08:32:27

标签: sql sql-server function

我在调用我创建的函数时遇到问题。非常感激任何的帮助。这是功能:

     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的帮助。

干杯。

1 个答案:

答案 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)

感谢。