SQL Insert into Value包含条件

时间:2018-05-09 13:56:57

标签: sql sql-server stored-procedures sql-insert

我尝试编写存储过程来修改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

非常感谢任何帮助!

1 个答案:

答案 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)
    }
}