我正在尝试自学数据库;感谢您的所有评论。 我有下表。
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
调用者提供他希望该行具有的新信息。我知道有些字段并不完全准确或精确;我这样做主要是为了学习。
- 我在 UPDATE 部分遇到 SET 命令的语法错误,我不知道如何修复它。
- 我正在编写的存储过程是您在现实生活中会编写的过程吗?这是反模式吗?
- 有没有我犯过的严重错误让您在阅读上述 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/