Как использовать подсказку запроса Oracle на QSqlQuery? - PullRequest
1 голос
/ 19 декабря 2011

В столбце «wimindex» указан восходящий индекс по умолчанию.Я хочу получить только что использованную подсказку оракула, как показано ниже.Но кажется, что подсказка запроса Oracle не работает.Конечно, этот запрос хорошо работает на Oracle SQL / Plus.Просто QT QSqlQuery не работает.Ты поможешь мне ?или любой намек?

Ниже мой код.спасибо…

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 Ответ

1 голос
/ 20 декабря 2011

Кажется, что 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 нет способа контролировать это, я думаю, вывероятно, придется использовать вид, как указано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...