3

そのため、C#.NETアプリケーションからOracleストアドプロシージャを呼び出そうとしています。私が見つけることができるほとんどのオンライン参照は「System.Data.OracleClient;を使用する」ことを示唆していますが、.Net 3.5はその名前空間を認識しないため、代わりに「Oracle.DataAccess.Client」を使用しています。

以下に私のコードの言い換えを示します。以前にセットアップしてテストした「myConn」というOracleConnectionには、すでにパラメータ「:arg_myArg」が入力されています(重要な場合は数値です)。

command.Connection = myConn;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "exec mySchema.myProc(:arg_myArg)"
command.ExecuteNonQuery();

秘訣は、プロシージャが設計上何も返さないことです。それは、私がプルした別のテーブルにデータを入力するだけです。ただし、上記のコードを実行しようとすると、最後の行に「OracleException」が表示され、次のエラーが発生します。

ORA-06550: line 1, column 13:
PLS-00103: Encountered the symbol "MYSCHEMA" when expecting one of the following:

   := . ( @ % ;
The symbol ":=" was substituted for "MYSCHEMA" to continue.

コマンドから「exec」を削除すると、代わりに次のエラーが発生します。

ORA-06550: line 1, column 8:
PLS-00801: internal error [22503]
ORA-06550: line 1, column 8:
PL/SQL: Statement ignored

何か案は?何でも明確にさせていただきます

stackoverflow.comに投稿するのはこれが初めてであり、この仕事での最後の週なので、これを理解することについてのあなたの理解と比較的急いで感謝します

4

1 に答える 1

7

私はあなたがこのような何かをする必要があると思います

command.Connection = myConn;
command.CommandType = CommandType.StoredProcedure;  
command.CommandText = "mySchema.myProc";  // the proc name   
command.Parameters.Add(/* TODO: Add parameter here */); 
command.ExecuteNonQuery();
于 2011-03-21T14:07:20.437 に答える