2014-09-25 63 views
0

我想创建一个存储过程使用嵌套如果,但我没有得到如何框架它。请帮助我。 这如果我想做的事:如果在存储过程中使用嵌套

CREATE PROCEDURE StarDistributorProfit 
@sponsorId varchar(20), 

AS 
if exists(select sponsor_id where(select count(user_id) from usertransaction where bv=50001)) 
    if count=1,TotalGBV=25000,TotalPBV=200 
BEGIN 
update usertransaction set rank='executive' where [email protected] 
update usertransaction set dp=(0.309*BV) 
update usertransaction set leadership_bonus=(0.07*BV) 
END 
if count=2,TotalGBV=20000,TotalPBV=200 
BEGIN 
update usertransaction set rank='star executive' where [email protected] 
update usertransaction set dp=(0.318*BV) 
update usertransaction set leadership_bonus=(0.03*BV) 
END 
if count=3,TotalGBV=20000,TotalPBV=300 
BEGIN 
update usertransaction set rank='Organizer' where [email protected] 
update usertransaction set dp=(0.318*BV) 
update usertransaction set leadership_bonus=(0.03*BV) 
END 
GO 
+0

你能给一些示例数据和预期的结果?它看起来像你正在做的事情可能可以在一个'UPDATE'语句中制定,而不是先执行测试然后再应用多个更新。另外,我怀疑你的'UPDATE'中有很多缺少'WHERE'子句。 – 2014-09-25 12:55:44

+0

感谢您的回答,我收到以下错误:关键字'if'附近语法不正确。在')'附近预期条件的上下文中指定的非布尔类型的表达式。 – sumedha 2014-09-25 12:58:53

回答

0

好像你正在寻找AND operator ...

例如IF count=1 AND TotalGBV=25000 AND TotalPBV=200

0

如果要检查多个条件,利用它们之间AND - 不是一个逗号:

IF count = 1 AND TotalGBV = 25000 AND TotalPBV = 200 
BEGIN 
    UPDATE usertransaction SET rank = 'executive' WHERE sponsor_id = @sponsorId 
    UPDATE usertransaction SET dp = (0.309 * BV) 
    UPDATE usertransaction SET leadership_bonus = (0.07*BV) 
END 
-- and so forth for all your IF^s 
相关问题