使用 OledbConnection 和 return 从 MVC4 调用存储过程到数据集
calling stored procedure from MVC4 using OledbConnection and return to dataset
我是 oracle11i 的新手,使用 sql 开发人员编写了一个将数据插入临时文件的过程 table - 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 开发人员中执行时,数据正在临时填充 table,现在我需要从 class 在 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。这是正确的方法吗?
请帮助 .. 自两天以来一直坚持使用谷歌搜索。
非常感谢帮助。
提前致谢
Remove your out parameter because No need to add parameter for OUT's. Read more 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
}
我是 oracle11i 的新手,使用 sql 开发人员编写了一个将数据插入临时文件的过程 table - 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 开发人员中执行时,数据正在临时填充 table,现在我需要从 class 在 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。这是正确的方法吗? 请帮助 .. 自两天以来一直坚持使用谷歌搜索。 非常感谢帮助。 提前致谢
Remove your out parameter because No need to add parameter for OUT's. Read more 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
}