回答

收藏

如何通过ODBC连接在c#中传递Informix集合参数(LIST,SET,MULTISET)

技术问答 技术问答 270 人阅读 | 0 人回复 | 2023-09-12

我正在寻找一C#中传递Informix列表参数的方法。
) y3 w& m& Q* u* l) z) ]$ b我问了一个关于如何传递多值参数的问题Informix但现在我需要从C#中执行它。
: Y$ O2 V. }/ n! W5 y; m5 x8 f% A在简历中,我有这样的程序。$ D  P3 N: J! ~& m- w( Q
CREATE PROCEDURE test_3(c LIST(CHAR(10) NOT NULL))    RETURNING CHAR(10) AS r;    DEFINE r CHAR(10);    FOREACH SELECT * INTO r FROM TABLE(c)        RETURN r WITH RESUME;    END FOREACH;END PROCEDURE;像这样在Aqua Data Studio.8.0.22.它可以正常工作
" p, Y. L/ i0 M/ h) e  L    EXECUTE PROCEDURE test_3('LIST{''stspols'',''stsrepo};因此,我举了一个简短的例子来解释如何工作c#中执行它。2 Z& G, z9 h; Y& p1 ?
首先像 CommandType.Text. t% z/ O2 j8 E  ]
string strParameters = "LIST{''stspols'',''stsrepo''}";using (OdbcConnection oConnection = new OdbcConnection("DSN=MYDSN;UID=MYUIDWD=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);                                                    这个作品很好。, j4 l. g8 w! x, @' a7 @8 X% g
所以我很好奇,试图执行它,但是 CommandType.StoredProcedure: O+ n% m" N" T5 ~+ k% |  p1 a
string strParameters = "LIST{''stspols'',''stsrepo''}";            using (OdbcConnection oConnection = new OdbcConnection("DSN=MYDSN;UID=MYUIDWD=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]Invalidcollection literal value.+ l/ e" Z+ ~9 p1 u9 n
所以在这一切之后,我的最后一个问题是/ j$ Y" q! H! |1 @
我如何从C#中使用Collection参数类型(LIST,SET,MULTISET)这种过程作为存储过程执行Informix过程。
# T9 M9 A2 L/ @7 k, s. r显然我做错了。/ j& ]* ~9 _9 S3 b
感谢您的宝贵帮助。
' n( _5 U6 `7 l/ ^! B% w                                                                7 G2 S2 y, u; x2 L0 g
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则