我是甲骨文的新手。我们公司需要使用 Oracle 和 .Net 的项目。所以我试图运行一个演示应用程序。我使用 Oracle 10g XE 作为 DB 和 VS2010。
我用一个简单的选择查询编写了一个程序,它被编译了(通过谷歌搜索得到了这个程序格式)。
我从 XE Dashboard 本身的 SQL 命令提示符运行存储过程。结果是这样的:
现在我用 C# 编写代码来调用该存储过程:
string sqlCon = "Data Source=xe;Persist Security Info=True;User ID=sa;Password=password;Unicode=True;Provider=OraOLEDB.Oracle;";
OleDbConnection Con = new OleDbConnection(sqlCon);
OleDbCommand cmd = new OleDbCommand();
DataSet ds = null;
OleDbDataAdapter adapter;
try
{
Con.Open();
////Stored procedure calling. It is already in sample db.
cmd.CommandText = "TESTPROC";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = Con;
ds = new DataSet();
adapter = new OleDbDataAdapter(cmd);
adapter.Fill(ds, "Users");
return ds.Tables[0];
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
此代码块没有引发任何异常。它被执行了,但我收到的是一个空的数据集。但是当我尝试直接使用查询获取数据时,我得到了结果。
那么,我尝试访问存储过程的方式是否正确?或者我的存储过程中是否有任何错误?任何人都可以指出错误或最好的方法吗?
提前致谢。