首页 新闻 搜索 专区 学院

这样的代码为什么执行后的结果是返回为0行

0
悬赏园豆:5 [已解决问题] 解决于 2009-10-28 11:21

declare @Title varchar
declare @AddBy varchar
declare @Importance varchar
declare @categoryId int

Update categories Set Title=@Title,AddBy=@AddBy,
Importance=@Importance where categoryId=@categoryId

boboisboy的主页 boboisboy | 菜鸟二级 | 园豆:346
提问于:2009-10-28 08:16
< >
分享
最佳答案
0

针对清海扬波 回复的我给个补充答案,当然他已经说明白了!存储过程中你只定义了相应的变量,但没赋值,也就是楼上回复的了!修改如下:

declare @Title varchar;
declare @AddBy varchar;
declare @Importance varchar;
declare @categoryId int;

set @Title='博问';set @AddBy='admin';set @Importance='www.xapx.net';set @categoryId=18;

Update categories Set Title=@Title,AddBy=@AddBy,
Importance=@Importance where categoryId=@categoryId

类似上面的操作即可,当然我在想,如果你上面那段声明代码如果是作为存储过程的接受参数的话,那就需要全部去掉前面的declare就好,同时定义的变量最好给定长度比如如下:

 @Title varchar(100);
@AddBy varchar(300);
@Importance varchar(255)

...

收获园豆:5
西越泽 | 专家六级 |园豆:10713 | 2009-10-28 09:33
其他回答(6)
0

条件categoryId=@categoryId 不满足吧。返回为0就是语句执行影响行为0,就是无效贝。

最大可能就是条件不对,如果是sql出错应该就会报错。

邢少 | 园豆:10926 (专家六级) | 2009-10-28 08:39
0

定义了要初始化的,你这样的结果相当于

Update categories Set Title=NULL,AddBy=@NULL,
Importance=NULL where categoryId=NULL

如果没有满足 categotyId=null的条件,就不会有效果。

清海扬波 | 园豆:823 (小虾三级) | 2009-10-28 09:22
0

@categoryId这个变量的值,要在数据库中有才可以.

你可以试着select * from categories  where categoryId=@categoryId看看数据库里是否有符合条件的语句.

如果你查不到符合的数据,返回的影响行数就是0

风浪 | 园豆:2991 (老鸟四级) | 2009-10-28 09:33
0

都是高手啊。。。

Jaryleely | 园豆:367 (菜鸟二级) | 2009-10-28 09:44
0

set @categoryId=数据库中存在的ID

louja | 园豆:210 (菜鸟二级) | 2009-10-28 10:14
0

参数没有赋值或者是where后的条件不满足。

天堂口 | 园豆:514 (小虾三级) | 2009-10-28 10:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册