2016-09-15 68 views
0

是否有可能在單個存儲過程中有多個更新語句更新多個表,我似乎在第二次更新時遇到了參數問題,代碼如下。在一個存儲過程中執行多個更新語句

ALTER PROCEDURE [dbo].[spUpdateUserProfile] 
@userID int, 
@UserName varchar(50), 
@FirstName varchar(50), 
@MiddleName varchar(50), 
@LastName varchar(50), 
@email varchar(50), 
@answer varchar(50), 
@QuestionID int 
AS 
BEGIN 
    SET NOCOUNT ON; 
    UPDATE dbo.USERS 
     SET userName = @userID, 
     FIRSTNAME = @FirstName, 
     MIDDLENAME = @MiddleName, 
     SURNAME = @LastName, 
     EMAILADDRESS = @email 
     WHERE USERID = @userID; 

    UPDATE dbo.USERPASSWORDS 
    SET Answer = @answer, 
    QuestionID = @QuestionID 
    WHERE USERID = @userID; 
END 
+0

簡短的回答是**是**,你可以在存儲過程中多次更新和查詢。現在,你的第二個更新不起作用的原因尚不清楚。什麼不工作?它是更新不正確的行還是沒有行?用不正確的值可能?或者它會拋出一個外鍵約束錯誤?請提供有關實際問題的更多詳細信息。 –

+0

嗨,歡迎來到該網站!如果您包含有關您遇到的問題的一些詳細信息,這對我們和您的問題確實會有所幫助。 _...我似乎遇到了參數問題......_太廣泛了。你有任何錯誤?它保存了錯誤的數據嗎?請在這裏和你未來的帖子中包含這些細節。 –

回答

0

是的,可以在單個存儲過程中有多個更新語句。你可以做的是你必須爲每個更新查詢使用準備好的語句,然後你去!

讓我告訴你有例子:

SET @sql = CONCAT('UPDATE dbo.USERS SET userName = @userID, FIRSTNAME = @FirstName, MIDDLENAME = @MiddleName, SURNAME = @LastName, EMAILADDRESS = @email WHERE USERID = @userID;'); 
    PREPARE stmt FROM @sql; 
    EXECUTE stmt; 
    DEALLOCATE PREPARE stmt; 
相關問題