SQL创建函数

hc9*_*c91 0 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
Run Code Online (Sandbox Code Playgroud)

然后我需要在表上使用此函数.这是填写'CV'列.这需要处理以下列:

@T Decimal (38,14) as SumSqJT
@R Decimal (38,14) as "SumObs"
@S Decimal (38,14) as "AvJT"
Run Code Online (Sandbox Code Playgroud)

编辑:

这是我用过的功能

Use [Neutral Month 20132014 ALL]

SELECT 
     dbo.MyFunction(SumSqJT1, SumObs, AvJT) AS FunctionResult
FROM
     Essex_Data_1314
WHERE
     SumObs > 1
Run Code Online (Sandbox Code Playgroud)

这会创建数字列表,但是我需要更新表Essex_Data_1314中的列CV,而不仅仅是创建数字列表.我怎么做?

这已经解决了这个问题:

Use [Neutral Month 20132014 ALL]

UPDATE
    Essex_Data_1314
SET
    CV = dbo.MyFunction(SumSqJT1, SumObs1, AvJT)
Run Code Online (Sandbox Code Playgroud)

注意:将所有内容都设置为DECIMAL或NUMERIC数据类型非常重要.否则会发生转换错误.

感谢JohnnyBell的帮助.

干杯.

Joh*_*ell 7

我不确定问题是什么.或者如果有任何问题.如果你想知道如何调用你创建的函数,你需要做这样的事情:

SELECT MyFunction(@T,@R,@S)
Run Code Online (Sandbox Code Playgroud)

显然用您想要传递函数的值替换@ T,@ R,@ S.

如果要在表中的列上使用该函数,可以在函数调用中引用列名,如下所示:

SELECT 
    MyFunction(Column1, Column2, Column3) AS FunctionResult
FROM
    MyTable
Run Code Online (Sandbox Code Playgroud)

如果要使用这些结果更新列,可以使用UPDATE语句轻松完成此操作:

UPDATE
    MyTable
SET
    FunctionResult = MyFunction(Column1,Column2,Column3)
Run Code Online (Sandbox Code Playgroud)

谢谢.