我有以下C#代码块将变量传递到Oracle 12c过程并返回数据集:
public void Show_Data()
{
try
{
OracleConnection conn = GetConnection();
{
conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnCST"].ToString();
OracleCommand cmd3 = new OracleCommand();
cmd3.CommandType = CommandType.StoredProcedure;
cmd3.CommandText = "CST_FEEDBACK";
cmd3.Connection = conn;
cmd3.Parameters.Add("LineID", OracleType.Number).Value = hLineID.Value;
cmd3.Parameters.Add("Emp_out", OracleType.Cursor).Direction = ParameterDirection.Output;
//connection2.Open();
var SearchAdapter = new OracleDataAdapter(cmd3);
var ds = new DataSet();
SearchAdapter.Fill(ds);
ResponseRepeater.DataSource = ds;
ResponseRepeater.DataBind();
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
当代码到达行var ds = new Dataset();
时,它失败并显示以下消息:
无法获取局部变量或参数的值,因为它是 此指令指针不可用,可能是因为它有 被优化了。
有人可以告诉我这意味着什么和/或如何解决这个问题?
答案 0 :(得分:1)
调试由编译器优化的代码时,经常会出现此问题。
切换到Build Configuration" Debug",或者如果已经激活,则转到Project - >属性 - >选项卡[Build],查找[x]优化代码,然后取消选中它:
答案 1 :(得分:0)
请尝试使用Oracle托管数据访问dll(https://www.nuget.org/packages/Oracle.ManagedDataAccess/)进行oracle连接。并使用任何oracle助手类(http://read.pudn.com/downloads153/sourcecode/windows/dotnet/671399/SQL%2BOleDb%2BOracle%2BNpg_helper/SqlHelper/OracleHelper.cs__.htm)。现在您可以使用正常的SQL查询。
using (SqlCommand command = new SqlCommand("select * from OrderProduct where OrderProductID=@folder", conn))
{
command.Parameters.Add(new SqlParameter("@folder", folder));
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
order[1] = Convert.ToString(reader.GetInt32(1));
}
}
如果您想更改为Collection,请使用Net上的一些通用转换DataRow to Collection代码。