2016-03-22 14 views
0

Oracle Pro * Cを使用しています。 sys_dtは、表内のchar(16)型で、値は '2016011113243456'です。私は私がしたいので、次回はそれが比較列(char型)where節のホスト変数をprocを使用して使用

sysdt最大から継続されます、これはgloble変数sysdtに毎回、毎回ストア、現在の最大sys_dt、完全に10行を50行を選択願っています

char sysdt[24]; 
void get_log(); 
int main(){ 
    int i = 0; 
    connect(); 
    while(i < 5){ 
     get_log(); 
     i++; 
    }   
} 
void get_log(){ 
    EXEC SQL SELECT *from mylog where sys_dt > :sysdt and rownum <=10 oder by sys_dt; 
    EXEC SQL SELECT max(sys_dt) INTO :sysdt where rownum <=10; 
} 

条件を使用するたびに10行を選択してください。sys_dt > :sysdt WHERE句sys_dt > :sysdtは機能しませんでした。 定数文字列を使用してselect * from mylog where sys_dt > '2016011113243456' and rownum <=10を実行できますが、実際にはホスト変数を使用します。

答えて

1

これはそうですか?

#include <sqlca.h> 

EXEC SQL BEGIN DECLARE SECTION; 
    char any[16+1]; 
    char sysdt[16+1]; 
EXEC SQL END DECLARE SECTION; 

int main(){ 
    // here is connect() 
    strcpy(sysdt, "0"); 
    memset(any, 0x00, sizeof(any)); 

    EXEC SQL SELECT sys_dt INTO :any from mylog 
     where sys_dt > :sysdt and rownum <= 10; 
+0

varibleを複数回選択することはできませんか?varibleを2回目に選択すると変数は変更されませんか? – Hhdzhu

+0

宣言セクションはこの答えの鍵ですと思います。 –

+0

@Hhdzhu:コードにループが見られませんでした。質問を変更する必要がある場合は、質問を編集して、この回答を無効にしないでください(問題の瞬間にあなたが持っているもののほとんどを残し、主に資料を追加します)。 –

関連する問題