簡體   English   中英

使用 .netCore 將多個參數傳遞給存儲過程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM