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的帮助.
干杯.
我不确定问题是什么.或者如果有任何问题.如果你想知道如何调用你创建的函数,你需要做这样的事情:
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)
谢谢.