0

我正在尝试使用 Microsoft WebMatrix 中的 WebMatrix.Data 执行 oracle 存储过程。我可以使用普通的 select 语句很好地获取数据......但我无法终生弄清楚如何执行 oracle proc。它不像我知道的 T-SQL 过程那样执行。请帮忙!

我试图找回一个单一的价值。我只是想证明我可以使用 webmatrix.data 访问 oracle 存储过程。这是一个查询,所以我不确定 db.Execute 是否会起作用,因为那是针对非查询的。

这是代码:

 CREATE OR REPLACE PROCEDURE COUNT_JOB_HISTORY
 (
   reccount OUT NUMBER
 )
 IS
   BEGIN
     SELECT COUNT(*) INTO reccount
     FROM JOB_HISTORY;
   END COUNT_JOB_HISTORY;

这是.Net代码

    public static dynamic GetJobHistoryCount()
    {
        var db = Database.OpenConnectionString(connectionString, providerName);

        var jobs = db.QueryValue("exec COUNT_JOB_HISTORY(:0)", "count");

        return jobs;
    }

它爆炸为 ORA-00900:无效的 SQL 语句

谢谢!

4

1 回答 1

1

您需要使用db.Execute()(请参阅http://msdn.microsoft.com/en-us/library/webmatrix.data.database.execute%28v=vs.99%29.aspx)...

关于程序本身和处理参数/结果很难说,因为您没有提供足够的信息,例如

该程序究竟返回了什么?一个值?一排?光标?

编辑-在 OP 显示存储过程之后:

每个存储过程都是“非查询” - WebMatrix 对存储过程内部发生的事情一无所知......我从未使用过 WebMatrix......所以这只是一个猜测:

int reccount = 0;
db.Execute ("COUNT_JOB_HISTORY", reccount);


也许

db.Execute ("COUNT_JOB_HISTORY", ref reccount); 

编辑 2 - 再试一次:

db.Execute ("BEGIN COUNT_JOB_HISTORY(:0); END;", reccount);
于 2011-07-26T18:29:45.307 回答