SQLサーバーにOracleデータベースをヒットさせるためのリンクサーバー設定があります。私はドット表記法を使用してOracleテーブルに結合するSQL Serverのクエリを持っています。 Oracleから「No Data Found」エラーが表示されます。 Oracle側では、(ビューではなく)表にぶつかり、ストアド・プロシージャは関係しません。OracleサーバーにリンクされたSQLサーバーは、データが存在するときにデータを戻しません。
最初に、データがない場合は、ゼロの行を取得するだけでエラーは発生しません。
第2に、この場合は実際にデータがあるはずです。
第3に、PL/SQLコードでORA-01403エラーが発生しただけです。決してSQLではありません。
これは、完全なエラーメッセージです:
OLE DBプロバイダリンクサーバー "OM_ORACLE" の "OraOLEDB.Oracle" 返されたメッセージ "ORA-01403:データが見つかりません"。
メッセージレベル7,166、レベル16、状態2、 リンクサーバー "OM_ORACLE"のOLE DBプロバイダ "OraOLEDB.Oracle"から行のデータを取得できません。
ここにいくつかの詳細がありますが、私のテーブルとデータがないので、何も意味しないでしょう。私は、「データが見つかりません」というエラーが表示されますなぜ
select *
from eopf.Batch b join eopf.BatchFile bf
on b.BatchID = bf.BatchID
left outer join [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] du
on bf.ReferenceID = du.documentUploadID;
は、私が理解することはできません。
これが問題とクエリです。以下のクエリは同じOracleテーブルを使用し、データは返されませんが、エラーは発生しません - 返される行はありません。
select * from [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] where documentUploadID = -1
データを返します以下のクエリ。 SQL Serverテーブルの1つを結合から削除しました。しかし、バッチ・テーブルを削除しても、batchFileから返される行は変更されません(どちらの場合も271行 - batchFileのすべての行にバッチ・エントリがあります)。それでも同じbatchFile行を同じOracle行に結合する必要があります。
select *
from eopf.BatchFile bf
left outer join [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] du
on bf.ReferenceID = du.documentUploadID;
そして、このクエリ5行を返します。元のクエリと同じでなければなりません。 (私はbatchとbatchFileテーブルからデータが必要なので、これを使うことはできません)。
select *
from [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] du
where du.documentUploadId
in
(
select bf.ReferenceID
from eopf.Batch b join eopf.BatchFile bf
on b.BatchID = bf.BatchID);
誰でもこのエラーが発生しましたか?