首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

利用游标执行删除的SQL语句,各位大侠帮小弟看看哪里出错了解决方法

2012-04-13 
利用游标执行删除的SQL语句,各位大侠帮小弟看看哪里出错了void deleteproc(char name[20]){int flag 1E

利用游标执行删除的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) 竟然可以删除了

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

热点排行