比较列(类型char)使用where子句中的主机变量使用proc

时间:2016-03-22 13:17:06

标签: c database oracle

我正在使用Oracle Pro * C. sys_dt是表中的char(16)类型,其值为'2016011113243456'。

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;
}

我希望这将完全选择50行,每次10行,每次将当前max sys_dt存储到全局变量sysdt中,所以下次它将从max sysdt继续

我想每次使用条件sys_dt > :sysdt选择10行 但是在WHERE子句中sys_dt > :sysdt没有用! 我可以使用常量字符串运行select * from mylog where sys_dt > '2016011113243456' and rownum <=10,但我真的想使用主变量。

1 个答案:

答案 0 :(得分: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;