我尝试编写存储过程来修改Sessions
表中的会话。我需要能够将值插入指定的行,即包含条件,尽管我不确定如何。
这是我的代码(我知道我不能执行INSERT INTO> VALUES> WHERE但是我试图让你知道我想做什么)。
CREATE PROCEDURE [dbo].[TT_Modify_Session]
@SessionName NVARCHAR(50),
@TrainingName NVARCHAR(100),
@Trainee NVARCHAR(20),
@TrainingDate DATE,
@SessionID INT
AS
SET NOCOUNT ON;
BEGIN TRY
BEGIN TRAN
INSERT INTO dbo.TT_Sessions (SessionName, Trainee, TrainingDate, TrainingName)
VALUES @SessionName, @Trainee, @TrainingDate, @TrainingName
WHERE @SessionID = [SessionID]
COMMIT
END TRY
BEGIN CATCH
ROLLBACK
PRINT ERROR_MESSAGE()
END CATCH
RETURN @sessionID
非常感谢任何帮助!
答案 0 :(得分:1)
您将代码描述为"修改"表中已存在的值。这是INSERT
...
(UPDATE
dbo.TT_Sessions
SET
SessionName = @SessionName,
Trainee = @Trainee,
TrainingDate = @TrainingDate,
TrainingName = @TrainingName
WHERE
SessionID = @SessionID
向表中添加一个新行,并保留所有预先存在的行...)
func update(v interface{}, updates map[string]string) {
rv := reflect.ValueOf(v).Elem()
for key, val := range updates {
fv := rv.FieldByName(key)
fv.SetString(val)
}
}