执行 BCP 脚本时出错 - 必须声明标量变量 @v

Error while executing BCP Script - Must declare the scalar variable @v

描述:我已经创建了一个存储过程,它将为从和到 id 之间的范围创建一个管道分隔的平面文件,这些文件作为参数传递,即 @from 和 @to。

第三个参数即@v 是一个临时变量,它将在循环中获取增量值,这将在查询的 where 条件中使用。

当我在SQL服务器中执行存储过程时,出现错误

Must declare the scalar variable @v

这是我的存储过程:

ALTER PROCEDURE [dbo].[FlatFileCreate]
    @from INT, 
    @to INT,
    @v INT
AS
BEGIN
    WHILE(@from <= @to)
    BEGIN
        SET @v = @from;

        DECLARE @cmd varchar(2000)

        SET @cmd = 'bcp "SELECT * FROM SDB.dbo.Customer WHERE ID=@v  " queryout "c:\output_Aug27.txt" -c -T -t "|" -SOLA-DB'

        EXEC master..xp_cmdshell @cmd

        SET @from = @from + 1;  
    END
    RETURN 0
END

提前致谢

在你的动态命令中没有@v

ALTER PROCEDURE [dbo].[FlatFileCreate]
    @from INT, 
    @to INT,
    @v INT
AS
BEGIN
    WHILE(@from <= @to)
    BEGIN
        SET @v = @from;

        DECLARE @cmd varchar(2000)

        SET @cmd = 'bcp "SELECT * FROM SDB.dbo.Customer WHERE ID=' + CAST(@v AS VARCHAR(MAX)) + '  " queryout "c:\output_Aug' + CAST(@v AS VARCHAR(MAX)) + '.txt" -c -T -t "|" -SOLA-DB'

        EXEC master..xp_cmdshell @cmd

        SET @from = @from + 1;  
    END
    RETURN 0
END