0

Microsoft の WebMatrix の WebMatrix.Data を使用して、Oracle ストアド プロシージャを実行しようとしています。通常のselectステートメントでデータをうまく取得できます...しかし、私の人生では、Oracle procを実行する方法を理解できません。私が知っている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 ステートメントとして爆発します

ありがとう!

4

1 に答える 1

1

使用する必要がありますdb.Execute()http://msdn.microsoft.com/en-us/library/webmatrix.data.database.execute%28v=vs.99%29.aspxを参照)...

手順自体とパラメーター/結果の処理については、次のような十分な情報を提供していないため、わかりにくいです

プロシージャは正確に何を返しますか? 1 つの値 ? 一列?カーソル?

EDIT-OPがストアドプロシージャを示した後:

すべてのストアド プロシージャは「非クエリ」です。WebMatrix は、ストアド プロシージャ内で何が起こるかについて何も知りません。私は WebMatrix を使用したことがありません。

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


多分

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

EDIT 2 - 別の試み:

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