2014-09-06 69 views
1

我写了一个存储过程,在更新语句中出现错误,请帮我修复它。谢谢。更新并在单个查询中选择

ALTER PROCEDURE [dbo].[UserTransac] 
@SponsorId varchar(20), 
@UserId varchar(20), 
@SponsorName varchar(50), 
@Level int=1 

AS 
BEGIN 
    if not exists(select User_Id from UserTransaction) 
    insert into UserTransaction(Sponsor_Id,User_Id,Level_No,Sponsor_Name) 
    values(@SponsorId,@UserId,@Level,@SponsorName) 
    else 
    insert into UserTransaction(Sponsor_Id,User_Id,Level_No,Sponsor_Name) 
    values(@SponsorId,@UserId,@Level,@SponsorName) 

    insert into UserTransaction(Sponsor_Id,User_Id,Level_No,Sponsor_Name) 
    values(@SponsorId,@UserId,@Level+1,@SponsorName) 

    update UserTransaction 
    set Sponsor_Id=select Sponsor_Id from Register where [email protected] 

END 
+1

你得到的错误是什么? – 2014-09-06 07:38:39

+0

关键字'select'附近的语法不正确。 – sumedha 2014-09-06 07:40:14

+0

'设置Sponsor_Id = Register.Sponsor_Id'我认为有一些条件丢失了。 – bummi 2014-09-06 07:43:51

回答

0

尝试此查询

update UserTransaction 
set Sponsor_Id = 1 
from Register 
where User_Id = @User_Id 
1

试试这个代码

UPDATE A 
SET A.[Sponsor_Id] = B.[Sponsor_Id] 
FROM [UserTransaction] A 
INNER JOIN [Register] B ON A.[User_Id] = B.[User_Id] 

你也可以添加WHERE INNER后子句JOIN

0

你就必须把选择括号内。尝试这个。

update UserTransaction set Sponsor_Id=(select Sponsor_Id from Register where [email protected]_id) 

虽然这会更新UserTransaction中所有记录的Sponsor_Id。请确保您使用适当的where子句更新所选记录。希望这可以帮助。