繁体   English   中英

编写 SQL 函数,但无法按预期工作

[英]Writing SQL function but its not working as desired

奖金 工人
90 1
90 2
50 3
40 4
30 5
20 6
10 7

假设我有一个上面显示的列(它可能以水平顺序列出,抱歉错误)我编写了一个用户定义的函数并想将奖金乘以 3,但我的列中有两个相同的值。 我希望该功能可以检测两个具有相同奖金金额的工人并打印“两名工人具有相同的奖金金额”谁可以帮助摆脱这种情况?

Create function newfunction
(
    @bonus as integer
    , @workers as integer
)
returns varchar(25)
as
begin
    declare @equality as integer 
    declare @returnvalue as varchar(25)

    Select @equality = Bonus
    from Employeestbl
    Where Workers = @workers

    If @equality = @Bonus set @returnvalue = 'there is an error'

    return @returnvalue
end

select *, dbo.newfunction(employeestbl.bonus,employeestbl.workers)
from Employeestbl

我希望该功能可以检测两个具有相同奖金金额的工人并打印“两名工人的奖金金额相同”

这个查询会发现:

IF EXISTS (SELECT Bonus, COUNT(*) FROM Table GROUP BY Bonus HAVING COUNT(*) > 1) PRINT 'two workers have same bonus amount'

想要将奖金乘以 3

UPDATE MyTable SET Bonus = Bonus * 3

假设您不想在两个奖金相同的情况下应用奖金,这里有一个脚本来做到这一点:

IF EXISTS (
    SELECT Bonus, COUNT(*) FROM Table GROUP BY Bonus HAVING COUNT(*) > 1
) 
BEGIN
    PRINT 'two workers have same bonus amount'
END
ELSE
BEGIN
    UPDATE MyTable SET Bonus = Bonus * 3
END

set returnvalue这是一个变量,必须set @returnvalue你在函数中有语法错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM