- - PR -
ROW_NUMBER() で構文エラー
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-03-24 13:47
VB5.0で開発しているのですが、どなたか知っていたら教えてください。
環境 Windows XP Oracle 10g VB 5.0 ROW_NUMBER関数を使ってデータを取得しようとしているのですが、 「クエリー式 'ROW_NUMBER() OVER (ORDER BY 列1 DESC, 列2, 列3)' の 構文エラー : 演算子がありません。」 となってしまいます。 しかし、SQL Plus では正常に取得できます。 VBでの接続は Set MyRecordset = MyDataBase.OpenRecordset(pSqlstr, dbOpenSnapshot) で行っています。(DAO) SQL文は SELECT ROW_NUMBER() OVER (ORDER BY 列1 DESC, 列2, 列3) AS "RNO", 列1, 列2, 列3, ・・・ FROM Table1 WHERE 列4='A' AND 列5=1 ORDER BY 列1 DESC, 列2, 列3; です。 いろいろ検索しているのですが、原因がわかりません。 宜しくお願い致します。 投稿に不慣れなもので、情報が少ない場合は言ってください。 | ||||
|
投稿日時: 2008-03-24 16:43
原因がわからない時に試行錯誤する時は、問題の切り分けをすることにしています。 今回の場合ですと SQL コマンドの怪しいところを割愛して '原因の箇所' を特定することから始めると思います。
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2008-03-24 16:53
じゃんぬねっとさん
ご意見ありがとうございます。 調べてみると「ROW_NUMBER」が使えないような気がしてきました。 Accessでリンクテーブルを作成して同じSQLを実行すると同じエラーになります。 Accessでは「ROW_NUMBER」は存在しないので使えないのは知っているのですが、 VBでも同じなんですかね。。。 現在"EXECUTE (SQL)"でどうにかできないか試行錯誤中です。 (PL/SQLなんて久しぶりだから忘れてる・・・) | ||||
|
投稿日時: 2008-03-24 17:31
パススルークエリにはなってるんですよね?
| ||||
|
投稿日時: 2008-03-25 09:25
パススルークエリ? ・・・検索中・・・ おぉ、Accessにはそんなのがあるのですね。 真似をして"QueryDef"でやってみましたが、同じエラーが出てしまいます。。。 Accessではパススルーを設定したらちゃんと取ってきてきれるのに。。。 やっぱりVB5.0ではできないものなんですかね。。。 | ||||
|
投稿日時: 2008-03-25 09:44
解決しました。
"QueryDef"の使い方が甘かったようです。 最初はこれでエラーになりました。 Dim qdf As QueryDef Set qdf = MyDataBase.CreateQueryDef("", pSqlstr) Set MyRecordset = qdf.OpenRecordset(dbOpenSnapshot) 下記のように修正したらSQLが通りました。 Dim qdf As QueryDef Set qdf = MyDataBase.CreateQueryDef("") qdf.Connect = MyDataBase.Connect qdf.SQL = pSqlstr Set MyRecordset = qdf.OpenRecordset(dbOpenSnapshot) データも欲しい順番で取れています。 めだかさん、ありがとうございました。 |
1