修改一SQL语句,高手请进!

wilsonsql 2007-01-17 05:34:08
以下存储过程实现:select count(*) from table_1212 where fromip(独立IP) in (select fromip from table_1211 union select fromip from table_1210
union select fromip from table_1209 union select fromip from table_1208
union select fromip from table_1207 union select fromip from table_1206
......)
但执行后总出错:
服务器: 消息 536,级别 16,状态 3,过程 pro_col,行 30
向 substring 函数传递了无效的 length 参数。
应该是:
set @sql='select count(*) from table_0101 where fromip in
('+substring(@sql,1,len(@sql)-10)+')'出错,
不知道应该怎么改?请高手指教,谢谢!


------------------------
alter procedure pro_col
as
declare @cur_col varchar(30)

declare @sql varchar(1000)
set @sql=''

declare cur_col cursor for
select distinct name from sysobjects
where xtype='u' and name like 'table_01##' order by name
--从系统表中找出name like 'table_%的所有表,并建立游标

open cur_col

fetch next from cur_col into @cur_col
--将游标名为cur_col的值赋给局部变量@cur_col
while @@fetch_status = 0 --如果读取数据成功

begin

--select @flag=''+@cur_col+''
set @sql=@sql+' select fromip from '+@cur_col+' '+' union all '


fetch next from cur_col into @cur_col

end

--
set @sql='select count(*) from table_0101 where fromip in
('+substring(@sql,1,len(@sql)-10)+')'

print @sql
exec (@sql)

close cur_col
deallocate cur_col

go

exec pro_col



...全文
168 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wilsonsql 2007-01-18
高手请指导,急!谢了!
回复
wilsonsql 2007-01-17
set @sql=@sql+' select fromip from '+@cur_col+' '+' union all '应该是不会少于10吧!
有点不明白,大老能不能详细一点,对了,如何加判断呢?谢谢!
回复
baoshan 2007-01-17
出现这种错误是因为
len(@sql)-10)出现了负值 ,里面加一个 判断 就可以了
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2007-01-17 05:34
社区公告
暂无公告