从存储过程更新表

Med*_*Man 2 sql t-sql sql-server

我正在努力学习数据库; 所有评论都表示赞赏.我有下表.

CREATE TABLE AccountTable
(
    AccountId INT IDENTITY(100,1) PRIMARY KEY,
    FirstName NVARCHAR(50) NULL,
    LastName NVARCHAR(50) NULL,
    Street NVARCHAR(50) NULL,
    StateId INT REFERENCES STATETABLE(StateId) NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

我想写一个更新行的存储过程.我想存储过程看起来像这样:

CREATE PROCEDURE AccountTable_Update
       @Id          INT,
       @FirstName  NVARCHAR(20),      
  @LastName   NVARCHAR(20), 
  @StreetName NVARCHAR(20),
  @StateId  INT
  AS
BEGIN
UPDATE AccountTable 
  Set FirstName = @FirstName
  Set LastName = @LastName
  Set Street = @StreetName
  Set StateId = @StateId 
  WHERE AccountId = @Id
END
Run Code Online (Sandbox Code Playgroud)

调用者提供他想要行所具有的新信息.我知道有些领域并不完全准确或准确; 我这样做主要是为了学习.

  1. 我在UPDATE部分中的SET命令出现语法错误,我不知道如何修复它.
  2. 存储过程是否正在编写您将在现实生活中编写的过程?这是反模式吗?
  3. 当您阅读上述TSQL时,我是否有任何严重的错误让您感到畏缩?

cki*_*tel 5

当您阅读上述TSQL时,我是否有任何严重的错误让您感到畏缩?

不是真的"严重",但我注意到你的表的字符串字段被设置为NVARCHAR(50)的数据类型,但你的存储过程参数是NVARCHAR(20).这可能引起关注.通常,存储过程参数将匹配相应字段的数据类型和精度.