Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ESQL/C删除Oracle中的行_Sql_Database_Oracle10g_Embedded Sql - Fatal编程技术网

使用ESQL/C删除Oracle中的行

使用ESQL/C删除Oracle中的行,sql,database,oracle10g,embedded-sql,Sql,Database,Oracle10g,Embedded Sql,我正在尝试用C和ESQL编写一个程序。我想做的一件事是每次运行程序时从我的一个表中删除旧的行(通过与SYSDATE比较) 因此,我的SQL代码如下所示: DELETE FROM Trip WHERE dateT < (SYSDATE - 1); void deleteOutDated(){ EXEC SQL DELETE FROM Trip WHERE dateT < (SYSDATE - 1); printf("Old trips deletes"); } 从行

我正在尝试用C和ESQL编写一个程序。我想做的一件事是每次运行程序时从我的一个表中删除旧的行(通过与SYSDATE比较)

因此,我的SQL代码如下所示:

DELETE FROM Trip
WHERE dateT < (SYSDATE - 1);
void deleteOutDated(){
    EXEC SQL DELETE FROM Trip WHERE dateT < (SYSDATE - 1);
    printf("Old trips deletes");
}
从行程中删除
其中dateT<(SYSDATE-1);
现在我知道这是可行的,因为我用SQL+工作表测试了它

但当我想用ESQL这样做时:

DELETE FROM Trip
WHERE dateT < (SYSDATE - 1);
void deleteOutDated(){
    EXEC SQL DELETE FROM Trip WHERE dateT < (SYSDATE - 1);
    printf("Old trips deletes");
}
void deleteOutlated(){
从行程中删除EXEC SQL,其中dateT<(SYSDATE-1);
printf(“旧行程删除”);
}
我的程序冻结在那里


因此,我想知道是否有可能在ESQL中生成这样的语句,以及我是否做错了什么?

printf()
语句的末尾添加一个新行,然后重试。添加一个
fflush(stdout)printf()
语句后执行code>,然后重试。大概在这之前您有一个打印操作。表面上看,ESQL没有理由不工作。这不是问题所在,因为行甚至没有从数据库中删除。即使删除printf,问题仍然存在。因此,您有具体证据表明该语句正在执行,但该语句没有及时完成(似乎挂起)。当DBMS运行时,您是否可以检测到它中的任何活动?您是否尝试过使用其中一种“解释”机制?您是否尝试过使用主机变量代替表达式“
(SYSDATE-1)
”,以查看这是否有任何区别?表的行程有多大?执行
DELETE FROM Trip需要多长时间;回滚?您是否对
Trip
运行了表完整性检查?它似乎是挂起的,因为它正在查找函数中不存在的errorLabel。加上它,删除工作了2次,随机没有改变任何东西。对于这个活动,我不知道我是否能做到,因为我正在处理大学的数据库,访问权限有限。还没试着解释。表达式为idTrip=1234时,其工作方式相同。这张桌子大约有30行。我现在不在城里,所以不能执行回滚。如何运行完整性检查?(它们的完整性真的会有30行左右的问题吗?)