读书人

利用游标执行删除的SQL语句各位大侠

发布时间: 2012-04-13 13:50:24 作者: rapoo

利用游标执行删除的SQL语句,各位大侠帮小弟看看哪里出错了
void deleteproc(char name[20])
{
int flag = 1;
EXEC SQL DECLARE de_cursor CURSOR FOR select name from student;
EXEC SQL OPEN de_cursor;
while(1){
EXEC SQL WHENEVER NOT FOUND DO break;
EXEC SQL FETCH de_cursor INTO:sname;
if(strcmp(sname,name) == 0){
EXEC SQL delete from student where name=:name;
EXEC SQL commit;
printf("Delete ---- Success\n");
flag = 0;
break;
}
}

EXEC SQL WHENEVER NOT FOUND CONTINUE;
if(flag == 1)
printf("Can not find the student\n");
EXEC SQL CLOSE de_cursor;
}
之前早上执行还好使 后来把游标查询名字封装成函数了 不管怎么输入都是“can not find the student"
现在再写回来 还是一直显示这句话

大侠们帮帮菜鸟!

[解决办法]
那你先看看数据库里面是不是还真的存在这些记录
[解决办法]
void deleteproc(char name[20])
这个参数换个别的名字吧。
[解决办法]
会不会是name[]或sname[]里有空格啥的,建议逐字节看下
[解决办法]

探讨

希望找不到的时候 打出"can not find the student"
用游标找那个name 找到了则删除
找不到打印显示信息
不应该是if(strcmp(sname,name) == 0吗
引用:

改成 if(strcmp(sname,name) != 0) 竟然可以删除了

当然可以了,你这个条件,判断成立,执行下面删除的语句
其实这句加在这里,感觉……

读书人网 >C语言

热点推荐