如何从WebMatrix调用Oracle存储过程?

时间:2011-07-26 17:58:17

标签: .net oracle stored-procedures webmatrix asp.net-webpages

我正在尝试使用Microsoft WebMatrix的WebMatrix.Data执行oracle存储过程。我可以使用正常的select语句来获取数据......但我不能为我的生活找出如何执行oracle proc。它不像我知道的T-SQL proc那样执行。请帮忙!

我正试图获得单一价值。我只是想证明我可以使用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语句

谢谢!

1 个答案:

答案 0 :(得分: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);
相关问题