簡體   English   中英

如何在DevArt PostgreSql dotConnect中處理復合類型參數

[英]How to deal with composite type arguments at DevArt PostgreSql dotConnect

我在postgre中有這樣的事情:

create type "test_complex_rec" as (
                           num$ numeric,
                           str$ character varying
                           )

create or replace function "test_complex_fun"(INOUT params "test_complex_rec") as
                  $BODY$
                  begin
                    params.num$ := params.num$ + 1;
                    params.str$ := 'some result';
                  end;
                  $BODY$ LANGUAGE plpgsql

和C#代碼:

using (var q1 = new PgSqlCommand("test_complex_fun", connection) { CommandType = CommandType.StoredProcedure  })
{
      var rowType = PgSqlRowType.GetRowType("test_complex_rec", connection);

      var complexValue = new PgSqlRow(rowType);
      complexValue[0] = 3;
      complexValue[1] = "lala";

      var compositeParam = new PgSqlParameter("params", complexValue)
      {
         Direction = ParameterDirection.InputOutput
      };

      // add it manually
      //q1.Parameters.Add(compositeParam);

      // lets try describe from metadata
      q1.ParameterCheck = true;
      q1.Prepare();
      q1.Parameters[0].Value = complexValue;

     q1.ExecuteNonQuery(); // Anyway, we will get ArgumentOutOfRange
}

執行最后一行將引發ArgumentOutOfRange。

Devart.Data.dll中發生了類型為'System.ArgumentOutOfRangeException'的未處理異常
附加信息:命令執行結果中沒有輸出參數'params'的值。

使用復合參數的正確方法是什么? 根據DBMonitor的說法,它將傳遞正確的參數(3,“ lala”)以起作用,但是如何在c#代碼中檢索“ out”值?

使用復合類型INOUT參數的錯誤已修復: http : //forums.devart.com/viewtopic.php ?f=3&t= 36447

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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