我正在尋找一種方式在C#中傳遞Informix列表參數。如何通過ODBC連接在C#中傳遞Informix集合參數(LIST,SET,MULTISET)
我問過一個關於如何將多值參數傳遞給Informix的問題,但現在我需要從C#中執行它。
相關問題是here。
在簡歷中我有一個像這樣的過程。
它的Aqua Data Studio.8.0.22執行像這樣
EXECUTE PROCEDURE test_3('LIST{''stspols'',''stsrepo''}');
工作正常,所以我做了如何在C#中執行它的一個簡單的例子。
首先像CommandType.Text
string strParameters = "LIST{''stspols'',''stsrepo''}";
using (OdbcConnection oConnection = new OdbcConnection("DSN=MYDSN;UID=MYUID;PWD=MYPWD;"))
{
oConnection.Open();
using (OdbcDataAdapter oCommand = new OdbcDataAdapter(string.Format("EXECUTE PROCEDURE test_3('{0}')", strParameters), oConnection))
{
using (DataTable dt = new DataTable())
{
oCommand.Fill(dt);
}
}
}
這一個工作正常。
所以我就courious並試圖執行它,但作爲CommandType.StoredProcedure
string strParameters = "LIST{''stspols'',''stsrepo''}";
using (OdbcConnection oConnection = new OdbcConnection("DSN=MYDSN;UID=MYUID;PWD=MYPWD;"))
{
oConnection.Open();
using (OdbcCommand oCommand = new OdbcCommand("{CALL test_3(?)}", oConnection))
{
oCommand.CommandType = CommandType.StoredProcedure;
OdbcParameter oParameter = new OdbcParameter("c", OdbcType.Char, 4000);
oParameter.Value = strParameters;
oCommand.Parameters.Add(oParameter);
using (OdbcDataAdapter oDataAdapter = new OdbcDataAdapter(oCommand))
{
using (DataTable dt = new DataTable())
{
oDataAdapter.Fill(dt);
}
}
}
}
但現在我得到ERROR [HY000] [Informix][Informix ODBC Driver][Informix]Invalid collection literal value.
所以經過這一切,我的最後一個問題是
我怎樣才能從C#執行這種Informix過程,使用Collection參數Type(LIST,SET,MULTISET)作爲存儲過程。
顯然我做錯了什麼。
在此先感謝您的寶貴幫助。
你又是對的!再次感謝@Jonathan –