0

tableA といくつかのデータを別の tableB の空のセットに結合しようとしています。主な目的は、tableB のすべての列を取得することです。tableB のデータは必要ありません。

次のSQLを構築しました。

SELECT uar.*, s.screen_id, s.screen_name
FROM crs_screens 
 LEFT JOIN crs\_user\_access\_right uar
 ON s.rid IS NOT NULL AND uar.rid IS NULL

この SQL は TOAD で完全に実行されますが、VB.NET の OracleDataAdapter.Fill(DataTable) ステートメントで使用するとエラーが返されます。

同じ効果を達成するための回避策があれば問題ありません。どうもありがとうございました。


エラーメッセージ:

OCI-22060: 引数[2]は無効または初期化されていない数値です


構成:

.NET フレームワーク: 1.1

オラクル9i

4

5 に答える 5

0

実行しているクライアント ドライバーのバージョンを教えてください。つまり、実際の完全版を意味します。たとえば、OleDB を使用して Oracle と通信している場合、ORAOLEDB.DLL ファイルのバージョン。たとえば、9.2.0.7 ですか?

于 2009-01-02T18:14:09.983 に答える
0

おそらく、問題はステートメントにあるのではなく、「uar」テーブルの 2 列目にあるのでしょう。
これを確認するために、別のテーブルでクエリを試すことはできますか?

于 2009-01-02T09:36:36.780 に答える
0

すべての列を明示的にリストしてみて、すべてのデータ型を確認してください。特に uar の 2 列目です。

于 2009-01-02T17:14:18.280 に答える
0

私は Oracle にあまり詳しくありません (そのため、具体的に Oracle の問題かどうかはわかりません) が、おそらく次のように SQL を言い換えるとうまくいくでしょう。

SELECT
  uar.*, s.screen_id, s.screen_name
FROM 
  crs_screen s 
    LEFT JOIN crs_user_access_right uar ON uar.rid <> uar.rid

左側にあるため、crs_screen は常に左外部結合に含まれるため、s.rid での比較は必要ありません。

于 2009-01-02T18:12:01.330 に答える