programing

.NetCore MariaDb Dapper - 저장 프로시저를 실행하는 방법?

yellowcard 2023. 9. 2. 08:09
반응형

.NetCore MariaDb Dapper - 저장 프로시저를 실행하는 방법?

Dapper with Mysql(MariaDB)을 사용하여 저장 프로시저를 실행하는 데 문제가 있습니다.

저장 절차는 다음과 같습니다.

CREATE DEFINER = `user` @`%`
PROCEDURE database.`proc_EnterRow`(
   IN `_entity_number`    INT(11),
   IN `_price`            DECIMAL(19, 13),
   IN `_valuation_date`   DATETIME)
   LANGUAGE SQL
   NOT DETERMINISTIC
   NO SQL
   SQL SECURITY DEFINER
BEGIN
  INSERT INTO tablename (entity_number,
                         entity_name,
                         valuation_date,
                         units,
                         price,
                         investor_code,
                         currency,
                         provisional,
                         isin,
                         type,
                         batchno,
                         maturity_date,
                         fx_rate,
                         transaction_id,
                         bond_reserves,
                         bond_reserves_percentage,
                         bond_reserves_conv,
                         sold,
                         verified)
     SELECT entity_number,
            entity_name,
            _valuation_date,
            units,
            _price,
            investor_code,
            currency,
            provisional,
            isin,
            type,
            batchno,
            maturity_date,
            fx_rate,
            transaction_id,
            bond_reserves,
            bond_reserves_percentage,
            bond_reserves_conv,
            sold,
            verified
       FROM tablename2 v
      WHERE v.entity_number = _entity_number`;
END;

저장 프로시저는 다음을 사용하여 SQL 편집기에서 실행할 때 정상적으로 작동합니다.

call proc_EnterRow(111,123.5456,'2021-07-09');

근데 제가 부를 때는.NetCore with Dapper ORM 오류 메시지가 계속 표시됩니다.

PROCEDURE 데이터베이스에 대한 인수 수가 잘못되었습니다.proc_EnterRow; 예상 3, 0

내 코드.넷 코드

DynamicParameters_parameters = new DynamicParameters();
_parameters.Add("@_entity_number", 111, DbType.Int32, SetDirection(parameterDirection), 11);
_parameters.Add("@_price", 123.5501, DbType.Decimal, SetDirection(parameterDirection));
_parameters.Add("@_valuation_date", "2021-01-01", DbType.Date, SetDirection(parameterDirection);
_dapper.Execute("dbname.proc_EnterRow", _parameters, commandType: CommandType.StoredProcedure);

당신의 도움에 미리 감사드립니다.

var resulst = _dapper.Query<YourEntity>("dbname.proc_EnterRow", 
                                        new { _entity_number = 111, _price = 123.5501, _valuation_date = 2021-07-09}, 
                                        commandType: CommandType.StoredProcedure);

ASP에서 Maria Db에 저장 프로시저를 실행하려고 하는 것 같습니다.NET 코어.

저장 프로시저 매개 변수가 정확하게 전달되지 않았기 때문에 오류가 발생하고 있습니다.

다음과 같은 방법으로 시도할 수 있습니다.

string name = "Kiron Test";
int employeeId = 520520;
int totalPrint = 10;

var enterNewRowInDb = new List<PrinterJob>();
enterNewRowInDb = _context.PrinterJobs
                          .FromSql("proc_EnterRow {0}, {1},{2}",name,employeeId,totalPrint)
                          .ToList();

출력:

enter image description here

다른 방법:

using (var connection = new SqlConnection("Server=ServerName;Database=DbName;Trusted_Connection=True;MultipleActiveResultSets=true"))
{
    connection.Open();

    var command = connection.CreateCommand();
    command.CommandType = CommandType.StoredProcedure;
    command.CommandText = "proc_EnterRow";

    command.Parameters.AddWithValue("@Name", name);
    command.Parameters.AddWithValue("@EmployeeId", employeeId);
    command.Parameters.AddWithValue("@TotalPrint", totalPrint);

    command.ExecuteNonQuery();
    connection.Close();
}

참고: 선택한 쿼리 데이터는 반환되지 않습니다.데이터 판독기 작업을 실행해야 합니다.

도움이 되길 바랍니다.더 걱정되는 일이 있으면 알려주세요.

언급URL : https://stackoverflow.com/questions/68320597/netcore-mariadb-dapper-how-to-execute-stored-procedure

반응형