【发布时间】:2014-09-25 12:42:54
【问题描述】:
我正在尝试使用嵌套 if 创建一个存储过程,但我不知道如何构建它。请帮帮我。 如果我正在尝试这样做:
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 sponsor_id=@sponsorId
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 sponsor_id=@sponsorId
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 sponsor_id=@sponsorId
update usertransaction set dp=(0.318*BV)
update usertransaction set leadership_bonus=(0.03*BV)
END
GO
【问题讨论】:
-
你能给出一些示例数据和预期的结果吗?看起来您正在做的事情可能可以在单个
UPDATE语句中制定,而不是先执行测试然后应用多个更新。另外,我怀疑您的很多UPDATEs 缺少WHERE子句。 -
感谢您的回答,我收到以下错误:关键字“if”附近的语法不正确。在预期条件的上下文中指定的非布尔类型表达式,靠近 ')'。
标签: sql-server-2005 stored-procedures