You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL新手求助:如何通过存储过程修改指定用户手机号?

正确实现modifyMobileNo存储过程的指导

先明确你现有代码的核心问题:

  • 两段代码都用了Table作为表名,这是SQL保留关键字,必须替换成你的实际表名(下文以Users作为示例表名)。
  • 第一段代码逻辑完全错误:用SELECT而非UPDATE,参数名写错(@MobilePNo未声明),BEGIN位置混乱,根本没实现修改功能。
  • 第二段代码缺少参数声明:@FirstName、@LastName、@MobileNo都没在存储过程头部定义,还错误地尝试修改主键ID(主键不应随意变更)。

方案1:通过姓名修改手机号(匹配你的需求场景)

针对你要修改Sarah Furgerson手机号的需求,定义对应参数,仅更新目标字段:

CREATE PROCEDURE modifyMobileNo
    @FirstName NVARCHAR(20),
    @LastName NVARCHAR(20),
    @NewMobileNo NCHAR(10)
AS
BEGIN
    SET NOCOUNT ON; -- 避免返回影响行数的额外冗余信息

    -- 更新匹配姓名的用户手机号
    UPDATE Users
    SET MobileNo = @NewMobileNo
    WHERE FirstName = @FirstName 
      AND LastName = @LastName;
END

调用示例(完成你的需求):

EXEC modifyMobileNo 
    @FirstName = 'Sarah', 
    @LastName = 'Furgerson', 
    @NewMobileNo = '3246568413';

方案2:通过ID修改手机号(更精准,避免重名问题)

如果存在同名用户,用ID修改能确保唯一命中目标用户,此时只需要两个参数:

CREATE PROCEDURE modifyMobileNo
    @ID INT,
    @NewMobileNo NCHAR(10)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE Users
    SET MobileNo = @NewMobileNo
    WHERE ID = @ID;
END

调用示例(假设Sarah的ID为1):

EXEC modifyMobileNo @ID = 1, @NewMobileNo = '3246568413';

额外注意事项

  • 务必把代码中的Users替换成你的实际表名。
  • 确保传入的@NewMobileNo符合NCHAR(10)的格式要求(长度为10的字符)。
  • 新手阶段先实现基础功能,后续可逐步添加错误检查(比如判断是否有行被更新)。

内容的提问来源于stack exchange,提问作者George Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:55:20