2016-09-15 67 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; 
相关问题