ALTER PROCEDURE [dbo].[cna_searchKey_insert]
@keywords varchar(100),
@tab char(1),
@affectedRow int output
AS
declare @strSQL nvarchar(1000)BEGIN
set @strSQL = 'select tab from keywords where keywords = '''+@keywords + ''''
exec sp_executesql @strSQL
set @affectedRow=@@rowcount
begin
if @@rowcount != 0
set @strSQL='update keywords set addtimes = addtimes + 1 where keywords = '''+@keywords + ''''
else
set @strSQL='insert keywords (keywords,tab) values (''' +@keywords+ ''','''+@tab+''')'
end
exec sp_executesql
END
我的意思是,往数据库里添加数据时,先判断这个数据是否存在,如果已经存在,那条记录的计数器+1,如果不存在就添加。
可是我在ASP里调用以上存储过程,发现response.write Cmd.Parameters("@affectedRow").Value是空的,什么值也没有。不知为什么?
@keywords varchar(100),
@tab char(1),
@affectedRow int output
AS
declare @strSQL nvarchar(1000)BEGIN
set @strSQL = 'select tab from keywords where keywords = '''+@keywords + ''''
exec sp_executesql @strSQL
set @affectedRow=@@rowcount
begin
if @@rowcount != 0
set @strSQL='update keywords set addtimes = addtimes + 1 where keywords = '''+@keywords + ''''
else
set @strSQL='insert keywords (keywords,tab) values (''' +@keywords+ ''','''+@tab+''')'
end
exec sp_executesql
END
我的意思是,往数据库里添加数据时,先判断这个数据是否存在,如果已经存在,那条记录的计数器+1,如果不存在就添加。
可是我在ASP里调用以上存储过程,发现response.write Cmd.Parameters("@affectedRow").Value是空的,什么值也没有。不知为什么?
解决方案 »
- SQL SERVER2008 R2 安装问题
- 截取字符串中间几位字符
- 怎样用代码(不用企业管理器)备份数据库中用户建立的存储过程啊?
- 谁帮我确认一下:聚簇索引和聚簇存放在数据存放上的区别好吗?
- 查询语句按两种方式排序
- [Microsoft][ODBC SQL Server Driver]超时已过期
- 如何用一条SQL语句实现按某一时间间隔查询?(在线等待!!!)
- ====急求高手:MSSQL中有无如Sql Anywhere中象List功能的一样函数?(内有实例)=====
- 数据绑定出错
- 触发器代码的优化,另外发现触发器动作频繁,系统内存占用严重,求解决办法
- 菜鸟求救,这个SQL要怎么写?
- SQLServer中的自增变量
cmd.parameters("@affectedRow")虽然名字和sql中的相同,但只有sql知道@affectedRow是什么,程序并不知道存储过程的返回值就是@affectedRow
改
if @@rowcount > 0
@keywords varchar(100),
@tab char(1),
@affectedRow int outputAS
declare @strSQL nvarchar(1000)BEGIN
/*
set @strSQL = 'select tab from keywords where keywords = '''+@keywords + ''''
exec sp_executesql @strSQL
set @affectedRow=@@rowcount
*/
set @strSQL = 'select @affectedRow=count(1) from keywords where keywords = '''+@keywords + ''''
exec sp_executesql @strSQL,N'@affectedRow int output',@affectedRow outputbegin
--if @@rowcount != 0
if @affectedRow>0
set @strSQL='update keywords set addtimes = addtimes + 1 where keywords = '''+@keywords + ''''
else
set @strSQL='insert keywords (keywords,tab) values (''' +@keywords+ ''','''+@tab+''')'
end
--exec sp_executesql
exec sp_executesql @strSQLEND
数据库返回值
parameters[13].Direction = ParameterDirection.Output;
scParameter.parameters = parameters;
db.EditTableNoReturnValue(scParameter);
return Convert.ToInt32(parameters[13].Value);