sql - 从存储过程更新表

标签 sql sql-server tsql

我正在尝试自学数据库;感谢您的所有评论。 我有下表。

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
)

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

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

调用者提供他希望该行具有的新信息。我知道有些字段并不完全准确或精确;我这样做主要是为了学习。

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

最佳答案

Are there any grave errors I have made that just makes you cringe when you read the above TSQL?

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

关于sql - 从存储过程更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1197755/

相关文章:

SQL交叉引用表自引用

mysql - 总是尽可能创建唯一的 key ?

mysql - 使用另一张表中的查询删除一张表中的行

sql - 根据分组依据获取有限的数据

php - 在sql语句中使用php $_SESSION

php - 如何从sql查询中获取数值

android - 在 Android 上测试与服务器的连接

sql-server - 使用 DateTime2 截断日期和时间

sql - 获取始终为空的表的列名

sql-server - "NOEXEC ON"中的有趣行为