我是oracle11i的新手,使用sql developer编写一个过程来将数据插入临时表 - TEMP_ALLOC
create or replace PROCEDURE SP_GEN_ALLOC
(A integer, B, Integer, o_cRefCursor OUT SYS_REFCURSOR)
as
BEGIN
OPEN o_cRefCursor FOR
SELECT colA,colB,colC FROM TEMP_ALLOC;
END SP_GEN_ALLOC;
在sql developer中执行时,数据会在临时表中填充,现在我需要在MVC4中从类中调用此过程。
OleDbConnection oConn = new OleDbConnection(System.Configuration.ConfigurationManager.AppSettings["dbConn"].ToString());
try
{
oConn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = oConn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SP_GEN_ALLOC";
cmd.Parameters.Add("A", OleDbType.BigInt).Value = inta;
cmd.Parameters.Add("B", OleDbType.BigInt).Value = intb;
cmd.Parameters.Add("o_cRefCursor",OleDbType.xxxxx
OleDbParameter oraP = new OleDbParameter();
oraP.Direction = System.Data.ParameterDirection.Output;
cmd.Parameters.Add(oraP);
OleDbDataReader oreader = cmd.ExecuteReader();
while(oreader.Read())
{
///assigning value to model
}
这里,在OledbParameter中,我找不到OledbType = cursor。这是正确的方法吗? 请帮助..两天以来一直坚持和谷歌搜索。 真的很感激帮助。 在此先感谢
答案 0 :(得分:0)
删除out参数,因为无需为OUT添加参数。阅读更多https://msdn.microsoft.com/en-us/library/ms973871.aspx
oConn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = oConn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SP_GEN_ALLOC";
cmd.Parameters.Add("A", OleDbType.BigInt).Value = inta;
cmd.Parameters.Add("B", OleDbType.BigInt).Value = intb;
OleDbDataReader oreader = cmd.ExecuteReader();
while(oreader.Read())
{
///assigning value to model
}