在C#中检索varchar2(4000)
的Oracle表作为输出参数时,我需要你的帮助。
我有这个存储过程:
Type TTABSelectResult IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER;
PROCEDURE FOO_Procedure(i_nIndex IN NUMBER,
i_nAnzahl IN NUMBER,
o_tabSelectResult OUT TTABSelectResult);
这就是我试过的代码:
using (var cmd = new OracleCommand
{
Connection = Conn,
CommandType = CommandType.StoredProcedure,
CommandText = "FOO_Package.FOO_Procedure",
BindByName = true
})
{
cmd.Parameters.Add(new OracleParameter("i_Index", index));
cmd.Parameters.Add(new OracleParameter("i_Cnt", maxCnt));
cmd.Parameters.Add("o_tabSelectResult", ???).Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
var obj = (???)cmd.Parameters["o_tabSelectResult"].Value;
}
请您告诉我哪些类型需要使用?因为OracleDbType
不支持string[]
。
PS:我编辑了更多信息。
PPS:寻找从o_tabSelectResult表中获取数据的可能性。
答案 0 :(得分:1)
试试这样:
using (var cmd = new OracleCommand
{
Connection = Conn,
CommandType = CommandType.StoredProcedure,
CommandText = "SELECT YOUR_FIELD FROM YOUR TABLE WHERE YOUR FILTER_COLUMN = @PARAM1",
BindByName = true
})
{
cmd.Parameters.AddWithValue("@PARAM1", your_filter_param);
var result = cmd.ExecuteScalar().ToString();
}
答案 1 :(得分:0)
我将输出更改为引用光标,可用于在c#中填充List。
像魅力一样。
感谢大家的投入!