使用游标
CREATE PROCEDURE dbo.mkdir
AS
declare @examid char(8)
declare @mkdir varchar(256)
declare @i integer,@count integer
select @count=count(*) from student
declare mycursor cursor for select examid from student
open mycursor
fetch mycursor into @examid
set @i=1
while @i<=@countno
begin
set @mkdir= 'mkdir f:\'+@examid+''
exec master..xp_cmdshell @mkd
fetch next from mycursor into @examid
set @i=@i+1
end
close mycursor
DEALLOCATE mycursor
CREATE PROCEDURE dbo.mkdir
AS
declare @examid char(8)
declare @mkdir varchar(256)
declare @i integer,@count integer
select @count=count(*) from student
declare mycursor cursor for select examid from student
open mycursor
fetch mycursor into @examid
set @i=1
while @i<=@countno
begin
set @mkdir= 'mkdir f:\'+@examid+''
exec master..xp_cmdshell @mkd
fetch next from mycursor into @examid
set @i=@i+1
end
close mycursor
DEALLOCATE mycursor
AS
declare @examid char(8)
declare @mkdir1 varchar(256)
declare @i integer
declare @countno integer
select @countno=count(*) from student
declare mycursor cursor for select examid from student
open mycursor
fetch mycursor into @examid
set @i=1
while @i<=@countno
begin
set @mkdir1= 'mkdir f:\'+@examid+''
exec master..xp_cmdshell @mkdir1
fetch next from mycursor into @examid
set @i=@i+1
end
close mycursor
DEALLOCATE mycursor
GO
稍做刚才的变量定义修改后正确代码如上所示,已语法通过,且可执行,但也只起到创建第一个的作用,请帮我看看,哪个循环体?应该没有问题呀?exec master..xp_cmdshell @mkdir1
这句肯定执行成功了,已创建一个55511010文件夹,但应该是几十个一起创建才对呀!
AS
declare @examid char(8)
declare @mkdir1 varchar(256)
declare mycursor cursor for select examid from student
open mycursor
fetch next from mycursor into @examid
while @@fetch_status=0
begin
set @mkdir1= 'mkdir f:\'+@examid+''
exec master..xp_cmdshell @mkdir1
fetch next from mycursor into @examid
end
close mycursor
DEALLOCATE mycursor
GO