大虾救命!存储过程未按理想执行,请帮小子看看,在线等待
drop procedure GetWindows
go
create procedure GetWindows(@origin varchar(10))
as
declare @i int,
@windows varchar(100),
@workid varchar(4)
set @workid=''
set @windows=''
declare win_cur scroll cursor
for select workid from window where place=@origin group by workid
open win_cur
if @@cursor_rows>0
begin
set @i=1
while @i<=@@cursor_rows
begin
fetch next from win_cur into @workid
if @windows=''
set @windows=cast(@workid as char(4))
else
set @windows=cast(@windows as char(4))+','+cast(@workid as char(4))
set @i=@i+1
end
end
close win_cur
deallocate win_cur
select @windows
大虾救命!存储过程未按理想执行,请帮小子看看,在线等待
以上过程在执行中发现只有第一条和最后一条记录被写到@windows,
百思不得其解,请教高手!
问题点数:20、回复次数:2Top
1 楼Yang_(扬帆破浪)回复于 2002-06-22 09:34:44 得分 0
drop procedure GetWindows
go
create procedure GetWindows(@origin varchar(10))
as
declare @i int,
@windows varchar(100),
@workid varchar(4)
set @workid=''
set @windows=''
declare win_cur scroll cursor
for select workid from window where place=@origin group by workid
open win_cur
if @@cursor_rows>0
begin
set @i=1
while @i<=@@cursor_rows
begin
fetch next from win_cur into @workid
if @windows=''
set @windows=cast(@workid as char(4))
else
set @windows=@windows+','+cast(@workid as char(4))
set @i=@i+1
end
end
close win_cur
deallocate win_cur
select @windows
Top
2 楼Yang_(扬帆破浪)回复于 2002-06-22 09:38:03 得分 20
更简单的方法:
drop procedure GetWindows
go
create procedure GetWindows(@origin varchar(10))
as
declare @windows varchar(100)
set @windows=''
select @windows=@windows+','+CAST(workid AS VARCHAR(4)) from window where place=@origin group by workid
SET @windows=SUBSTRING(@windows,2,LEN(@windows)-1)
Select @windows
GO
Top




