반응형
.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();
출력:
다른 방법:
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
반응형
'programing' 카테고리의 다른 글
Express res.send 파일 던지기 금지 오류 (0) | 2023.09.02 |
---|---|
Junit에서 @AutoWired 주석과 함께 @InjectMocks를 사용하는 방법 (0) | 2023.09.02 |
PHP/HTML 혼합 코드를 올바르게 들여쓰는 방법은 무엇입니까? (0) | 2023.08.28 |
Gitrebase 병합 충돌 (0) | 2023.08.28 |
이름 속성에 대괄호가 있는 입력에 대한 jQuery 선택기 (0) | 2023.08.28 |