我正在尝试使用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语句
谢谢!
答案 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);