使用游标
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

解决方案 »

  1.   

    mudeen(笑哥哥)CREATE PROCEDURE dbo.mkdir1
    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文件夹,但应该是几十个一起创建才对呀!
      

  2.   

    mudeen(笑哥哥),谢谢。问题我已解决了,刚才上面的代码是对的,是我刚才在调试时把表student的记录删得只有一个了。真不好意思,打扰你老人家了。再次感谢!
      

  3.   

    mudeen(笑哥哥),谢谢。问题我已解决了,刚才上面的代码是对的,是我刚才在调试时把表student的记录删得只有一个了。真不好意思,打扰你老人家了。再次感谢!
      

  4.   

    我上大三.北京信息工程学院信息系统. 不常用QQ. [email protected]
      

  5.   

    CREATE PROCEDURE dbo.mkdir
    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