1

我是甲骨文的新手。我们公司需要使用 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);
 }

此代码块没有引发任何异常。它被执行了,但我收到的是一个空的数据集。但是当我尝试直接使用查询获取数据时,我得到了结果。

那么,我尝试访问存储过程的方式是否正确?或者我的存储过程中是否有任何错误?任何人都可以指出错误或最好的方法吗?

提前致谢。

4

2 回答 2

1

建议:尝试将“结果”声明为“输出”参数:

这是另一个可能有帮助的链接:

于 2012-10-04T05:26:17.577 回答
1

还有另一个链接可能会有所帮助:

http://www.akadia.com/services/ora_return_result_set.html

于 2013-04-04T13:26:21.117 回答