Sql server 带有exec xp\u create\u子目录的Sql Server游标

Sql server 带有exec xp\u create\u子目录的Sql Server游标,sql-server,Sql Server,我正在尝试遍历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 Acco

我正在尝试遍历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吗?

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

...
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

对于每个参数,您可以传递一个变量或一个值,但不能通过计算表达式来获得该值。

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

发件人:

致:


天啊!认真地这么简单??好笑,让我试试。效果很好。谢谢一旦它允许我,我会把这个标记为答案。
set @path = 'C:\inetpub\wwwroot\media\images\accounts\' + @id
set @path = 'C:\inetpub\wwwroot\media\images\accounts\' + Cast(@id as varchar)