执行 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
描述:我已经创建了一个存储过程,它将为从和到 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