我正在使用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
,但我真的想使用主变量。
答案 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;