[英]passing multiple parameters to stored procedure using .netCore
我不確定我做對了還是沒有將多個參數傳遞給我的 SP,因為它給了我一個錯誤,即 function 不存在,這是我在 postgressql 中的 function:
SELECT wpv.avail_pro_failedbattry_error_powerconv(
<date>,
<date>,
<character varying>,
<character varying>,
<character varying>
);
這是我的.NetCore 部分:
regionalManager = "%";
dtFrom = "02/07/2020";
dtTo = "03/07/2020";
string service_under = "%";
string supervisor = "%";
NpgsqlParameter p0 = new NpgsqlParameter("@drfrom", NpgsqlDbType.Date);
NpgsqlParameter p1 = new NpgsqlParameter("@dtto", NpgsqlDbType.Date);
NpgsqlParameter p2 = new NpgsqlParameter("@regionalmanager", NpgsqlDbType.Varchar);
NpgsqlParameter p3 = new NpgsqlParameter("@serviceunder", NpgsqlDbType.Varchar);
NpgsqlParameter p4 = new NpgsqlParameter("@supervisor", NpgsqlDbType.Varchar);
var x = _db.dataInGlance.FromSqlRaw(@"SELECT * from wpv.avail_pro_failedbattry_error_powerconv(@p0,@p1,@p2,@p3,@p4)
res (o_availability double precision, o_production double precision,o_numberofturbines integer, o_errors_disabled integer,o_failed_battery integer,o_power integer,o_crew_present text)",dtFrom,dtTo,regionalManager,service_under,supervisor);
像這樣傳遞參數是正確的方法嗎?
您可以通過簡單的字符串插值傳遞參數,例如:
var x = _db.dataInGlance.FromSqlRaw($@"
SELECT * from wpv.avail_pro_failedbattry_error_powerconv(
'{dtFrom.ToString(""yyyy-MM-dd HH:mm:ss.fff"")}',
'{dtTo.ToString(""yyyy-MM-dd HH:mm:ss.fff"")}',
'{regionalManager}',
'{service_under}',
'{supervisor}')
...
您可能需要為您的語言文化設置日期變量的特殊格式。
要發送參數,您必須使用您指定為第一個參數的名稱,例如@drfrom
、“@dtto”等。
var x = _db.dataInGlance.FromSqlRaw(@"
SELECT * from wpv.avail_pro_failedbattry_error_powerconv(
@drfrom,
@dtto,
@regionalmanager,
@serviceunder,
@supervisor)
...
還有一個選項可以像這樣發送
\set p1 @drfrom
\set p2 @dtto
\set p3 @regionalmanager
\set p4 @serviceunder
\set p5 @supervisor
var x = _db.dataInGlance.FromSqlRaw(@"
SELECT * from wpv.avail_pro_failedbattry_error_powerconv(
:p1, :p2, :p3, :p4, :p5)
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.