各路大神額,請教一下。我要查詢表M21_RECEIPT_INFO的資料,分頁查詢,查詢第一頁,每頁10條記錄,但是發現游標定義處的條件并不起作用,就是會把表里的所有資料都查出來。為什么條件不起作用呢?
EXEC SQL DECLARE receipt_cursor CURSOR FOR
SELECT * FROM (
SELECT M1.*,ROWNUM RN FROM(
SELECT * FROM M21_RECEIPT_INFO M WHERE TELLER_NUMBER =:teller_number1 AND
SAVE_RESULT =:save_result1 AND TRANDE_TIME<=:end_time AND TRANDE_TIME >= :begin_time)M1
WHERE ROWNUM <= 10)M2
WHERE M2.RN >0;
EXEC SQL OPEN receipt_cursor;//打開游標
for(;i<=number;i++)
{
EXEC SQL FETCH receipt_cursor INTO :receipt_tables;
if(i==1)
snprintf(sFhnr,sizeof(sFhnr),"%s||%s||%s||%s||%s||%d",receipt_tables.receipt_number,receipt_tables.trande_type,receipt_tables.customer_name,receipt_tables.trande_time,receipt_tables.save_result,receipt_tables.reprint_number);
else
sprintf(sFhnr,"%s^%s||%s||%s||%s||%s||%d",sFhnr,receipt_tables.receipt_number,receipt_tables.trande_type,receipt_tables.customer_name,receipt_tables.trande_time,receipt_tables.save_result,receipt_tables.reprint_number);
}
EXEC SQL CLOSE receipt_cursor;//關閉游標
uj5u.com熱心網友回復:
SELECT *,ROWNUM RN FROM M21_RECEIPT_INFO M WHERE TELLER_NUMBER =:teller_number1 ANDSAVE_RESULT =:save_result1 AND TRANDE_TIME<=:end_time AND TRANDE_TIME >= :begin_time)M1
WHERE ROWNUM <= 10
呢
uj5u.com熱心網友回復:
同意樓上的SELECT *,ROWNUM RN FROM M21_RECEIPT_INFO M WHERE TELLER_NUMBER =:teller_number1 AND
SAVE_RESULT =:save_result1 AND TRANDE_TIME<=:end_time AND TRANDE_TIME >= :begin_time)M1
WHERE ROWNUM <= 10
uj5u.com熱心網友回復:
在直接使用rownum在做條件的時候,必須包含rownum=0,例如select * from a
where rownum <= 10;
需要查詢不包含0的時候,需要將rownum作為實列,例如
select * from
(
select a.*, rownum as rn from a
) b
where b.rn between 6 and 10;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/90745.html
標籤:開發
