Как вызвать хранимую процедуру Oracle из WebMatrix? - PullRequest
0 голосов
/ 26 июля 2011

Я пытаюсь выполнить хранимую процедуру оракула, используя WebMatrix.Data из Microsoft WebMatrix. Я могу нормально получать данные с помощью обычных операторов select ... но я не могу понять, как выполнить процедуру Oracle. Это не выполняется как T-SQL Proc, я знаю это. Пожалуйста, помогите!

Я пытаюсь вернуть одно значение. Я просто пытаюсь доказать, что могу получить доступ к хранимому оракулу с помощью webmatrix.data. Это запрос, поэтому я не уверен, что 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 Ответ

1 голос
/ 26 июля 2011

вам нужно использовать db.Execute() (см. http://msdn.microsoft.com/en-us/library/webmatrix.data.database.execute%28v=vs.99%29.aspx)...

Относительно самой процедуры и работы с параметрами / результатом трудно сказать, поскольку вы не предоставили достаточно информации, такой как

Что именно возвращает процедура «одно значение? Одна строка? Курсор»

EDIT- после того, как 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);
...