2011-12-19 2 views
1

列 "wimindex"に昇順の既定のインデックスがあります。 以下のように、oracleヒントを使用して最近のものを取得したいと考えています。 しかし、Oracleのクエリのヒントは機能しないようです。 もちろん、このクエリはOracle sql/plusでもうまく機能しています。 QT QSqlQueryは機能しません。 私を助けてくれませんか?または任意のヒント?QSqlQueryでOracleのクエリヒントを利用するには?

以下は私のコードです。 おかげで...

QString lastWimIdxQuery = “SELECT **/*+ index_rs_desc(VIOLATE, VIOLATE) */** WIMINDEX FROMVIOLATE WHERE wimindex > 0 and rownum =1”; 
query.exec(lastWimIdxQuery); 
int fieldNo = query.record().indexOf(“WIMINDEX”); 
if(query.next()) { 
this->m_lastWimIdx = query.value(fieldNo).toInt(); 
qDebug()<<this->m_thread_name << “ : “ << this->m_lastWimIdx; 
}else { return; } 

答えて

1

はQTはおそらくコメント/ヒントを食べて、それをデータベースに渡していないようですか?クエリを使用して、データベース内のビューを作成し、この仮説を確認するために、その中から選択:

CREATE OR REPLACE VIEW LastWMIdxView as 
SELECT **/*+ index_rs_desc(VIOLATE, VIOLATE) */** WIMINDEX 
    FROM VIOLATE 
WHERE wimindex > 0 and rownum =1; 

次に、あなたのコード内でそのビューを使用します。

QString lastWimIdxQuery = "SELECT wmindex FROM LastWMIdxView"; 

代わりであるとして、あなたはあなたのクエリを実行する可能性があり、解析されたかを確認するために、V $のSQLビューを確認してください。

SELECT sql_text 
    FROm v$sql 
WHERE UPPER(sql_text) LIKE '%VIOLATE%'; 

それはQTでそれを制御する方法がありますしない限り、コメントは、食べられていることが判明した場合、私はあなたがおそらく使用する必要がありますだと思います上に概説されたビュー。

関連する問題