繁体   English   中英

我需要来自 dapper 的返回值执行插入

[英]I need return value from dapper execute insert

BKG_AOR_CHANGE_SK 在插入行时从数据库触发器填充。 我需要检索这个值作为我插入的一部分。 我该怎么做? 我已经尝试过将其作为输出参数,但它没有返回值。

   public BKG_AOR_CHANGE BKG_AOR_CHANGE_Create(BKG_AOR_CHANGE dto)
    {
        try
        {
            var parameters = new DynamicParameters();

            parameters.Add(name: "MEMBER_ORIG_EFF_DT", value: dto.MEMBER_ORIG_EFF_DT, direction: ParameterDirection.Input);
            parameters.Add(name: "MEMBER_ID", value: dto.MEMBER_ID, direction: ParameterDirection.Input);
            parameters.Add(name: "MEMBER_NAME", value: dto.MEMBER_NAME, direction: ParameterDirection.Input);
            parameters.Add(name: "CUSTOMER_TYPE", value: dto.CUSTOMER_TYPE, direction: ParameterDirection.Input);
            parameters.Add(name: "CURR_AGENT_ID", value: dto.CURR_AGENT_ID, direction: ParameterDirection.Input);
            parameters.Add(name: "CURR_AGENT_NAME", value: dto.CURR_AGENT_NAME, direction: ParameterDirection.Input);
            parameters.Add(name: "CURR_AGENCY_ID", value: dto.CURR_AGENCY_ID, direction: ParameterDirection.Input);
            parameters.Add(name: "BKG_AOR_CHANGE_SK", direction: ParameterDirection.Output, size: 31);

            var sql = @"INSERT
                            INTO DS_BROKERAGE.BKG_AOR_CHANGE
                              (
                                MEMBER_ORIG_EFF_DT,
                                MEMBER_ID,
                                MEMBER_NAME,
                                CUSTOMER_TYPE,
                                CURR_AGENT_ID,
                                CURR_AGENT_NAME,
                                CURR_AGENCY_ID,
                              )
                              VALUES
                              (
                                :MEMBER_ORIG_EFF_DT,
                                :MEMBER_ID,
                                :MEMBER_NAME,
                                :CUSTOMER_TYPE,
                                :CURR_AGENT_ID,
                                :CURR_AGENT_NAME,
                                :CURR_AGENCY_ID,
                              )";
            this._db.Execute(sql, parameters);

            dto.BKG_AOR_CHANGE_SK = parameters.Get<int>("BKG_AOR_CHANGE_SK");

            return dto;
        }
        catch (Exception e)
        {
            throw e;
        }
    }

啊,看来我只是错过了返回声明

    public BKG_AOR_CHANGE BKG_AOR_CHANGE_Create(BKG_AOR_CHANGE dto)
    {
        try
        {
            var parameters = new DynamicParameters();

            parameters.Add(name: "MEMBER_ORIG_EFF_DT", value: dto.MEMBER_ORIG_EFF_DT, direction: ParameterDirection.Input);
            parameters.Add(name: "MEMBER_ID", value: dto.MEMBER_ID, direction: ParameterDirection.Input);
            parameters.Add(name: "MEMBER_NAME", value: dto.MEMBER_NAME, direction: ParameterDirection.Input);
            parameters.Add(name: "CUSTOMER_TYPE", value: dto.CUSTOMER_TYPE, direction: ParameterDirection.Input);
            parameters.Add(name: "CURR_AGENT_ID", value: dto.CURR_AGENT_ID, direction: ParameterDirection.Input);
            parameters.Add(name: "CURR_AGENT_NAME", value: dto.CURR_AGENT_NAME, direction: ParameterDirection.Input);
            parameters.Add(name: "CURR_AGENCY_ID", value: dto.CURR_AGENCY_ID, direction: ParameterDirection.Input);
            parameters.Add(name: "BKG_AOR_CHANGE_SK", direction: ParameterDirection.Output, size: 31);

            var sql = @"INSERT
                            INTO DS_BROKERAGE.BKG_AOR_CHANGE
                              (
                                MEMBER_ORIG_EFF_DT,
                                MEMBER_ID,
                                MEMBER_NAME,
                                CUSTOMER_TYPE,
                                CURR_AGENT_ID,
                                CURR_AGENT_NAME,
                                CURR_AGENCY_ID,
                              )
                              VALUES
                              (
                                :MEMBER_ORIG_EFF_DT,
                                :MEMBER_ID,
                                :MEMBER_NAME,
                                :CUSTOMER_TYPE,
                                :CURR_AGENT_ID,
                                :CURR_AGENT_NAME,
                                :CURR_AGENCY_ID,
                              )
                              RETURNING BKG_AOR_CHANGE_SK INTO :BKG_AOR_CHANGE_SK";

            this._db.Execute(sql, parameters);

            dto.BKG_AOR_CHANGE_SK = parameters.Get<int>("BKG_AOR_CHANGE_SK");

            return dto;
        }
        catch (Exception e)
        {
            throw e;
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM