2014-09-06 70 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子句更新所選記錄。希望這可以幫助。