0

我正在尝试遍历 SQL Server DB 上的所有现有帐户并使用 xp_create_subdir 创建单个帐户文件夹。但是,我知道我所拥有的不起作用,因为我试图将变量作为参数的一部分传递。这是我的代码:

declare @id int

declare crsr cursor LOCAL FAST_FORWARD for

select  Id
from AccountModels
where Active = 1
and Id in (select Account_Id from AccountPhotoModels)
order by Id

open crsr
fetch crsr into @id

While (@@fetch_status = 0)
begin

   exec master.dbo.xp_create_subdir 'C:\inetpub\wwwroot\media\images\accounts\' + @id

fetch crsr into @id
end
close crsr
deallocate crsr

有没有人知道如何在我上面尝试做的游标中调用该系统 SP?

4

2 回答 2

0

只需将要传递的值组合为单独的步骤:

...
declare @path varchar(max)
open crsr
fetch crsr into @id

While (@@fetch_status = 0)
begin
   set @path = 'C:\inetpub\wwwroot\media\images\accounts\' + @id
   exec master.dbo.xp_create_subdir @path

fetch crsr into @id
end
close crsr
deallocate crsr

对于每个参数,您可以传递一个变量或一个- 但您无法计算表达式来获取该值。

于 2013-11-05T15:29:05.520 回答
0

只要@id不是varchar(而是一个int),您还必须进行此更改:

从:

set @path = 'C:\inetpub\wwwroot\media\images\accounts\' + @id

至:

set @path = 'C:\inetpub\wwwroot\media\images\accounts\' + Cast(@id as varchar)
于 2016-06-28T14:02:17.747 回答