2

これは、Oracleデータベースに接続するためのコードです。最後の行で失敗します:dbDataAdapter.Fill(dtResult);

private object Execute(CommandType commandType, Common.DATA.SqlCommonExecutionType sqlCommonExecutionType, DbCommand dbCommand)

dbc = dbConnection.CreateCommand();
dbc.CommandType = commandType;
dbc.CommandText = dbCommand.CommandText;
dbc.CommandTimeout = 3600;

if (dbc.Connection.State == ConnectionState.Closed)
   dbc.Connection.Open();

DataTable dtResult = new DataTable();
DbDataAdapter dbDataAdapter = dbProviderFactory.CreateDataAdapter();
dbDataAdapter.SelectCommand = dbc;
dbDataAdapter.Fill(dtResult);

エラーは「OracleRxceptionがキャッチされました:

ORA-06550: line 1, column 7:
PLS-00201: identifier 'RESETUNFINISHEDJOBS' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

Oracle SQL*Plusを介してデータベースにアクセスできます。なぜこのエラーが発生するのですか?データベース側にストアドプロシージャがありませんか、それとも私のコードですか?これを解決する方法のアイデアはありますか?

4

2 に答える 2

4

schema.package.storedprocedureコマンドテキストで定義(またはschema.table)する必要がある場合があります

それ以外の:

select * from table

使用する:

select * from schema.table

...そして同じことが関数/ストアドプロシージャにも当てはまります

commandTextにストアドプロシージャのみが含まれている場合:

storedprocedurename

試す:

schema.package.storedprocedurename
于 2011-01-31T14:07:20.703 に答える
1

また、パブリックシノニムを使用することもできます。通常、所有者/スキーマアプローチを明示的に使用するよりも、オブジェクトのパブリックシノニムを作成する方が適切なアプローチです。これらのオブジェクトのユーザーは、このアプローチではschema.someObject表記について心配する必要はありません。

于 2011-01-31T18:54:30.973 に答える