【问题标题】:bcp export syntax error on parameter参数上的 bcp 导出语法错误
【发布时间】:2017-09-05 21:05:21
【问题描述】:

我想知道如何将我的 bcp 中的参数与存储过程合并,错误在第 8 行 @JDEBatchNumber 知道如何添加此参数吗? 谢谢你

DECLARE @cmd varchar(500)
Declare @TimeStamp as nvarchar(100) = Replace((CONVERT(varchar(25), getdate(), 121)),':','')
Declare @JDEBatchNumber as float = '566521'
Declare @NumberOfRecords as bigInt = (select count(*) From [JDE_PRODUCTION].[PRODDTA].[F0911] Where GLICU = @JDEBatchNumber)


if @NumberOfRecords > 0
SET @cmd = 'BCP "EXECUTE [F0902].[D365O].[Get-F0911NewRecordsByBatchNumber] '+@JDEBatchNumber+'" QUERYOUT "D:\D365O\DataSource\F0911\Input\'+@TimeStamp+'.csv" -c -t\^, -T -S' + @@SERVERNAME + ''
EXECUTE MASTER..xp_cmdshell @cmd;

【问题讨论】:

    标签: sql sql-server tsql stored-procedures bcp


    【解决方案1】:

    您不能将浮点数与 + 连接,因为它会尝试添加它...只需先转换它。

    SET @cmd = 'BCP "EXECUTE [F0902].[D365O].[Get-F0911NewRecordsByBatchNumber] '+ cast(@JDEBatchNumber as varchar(64))+'" QUERYOUT "D:\D365O\DataSource\F0911\Input\'+@TimeStamp+'.csv" -c -t\^, -T -S' + @@SERVERNAME + ''
    

    虽然,我认为这更符合您的要求......

    SET @cmd = 'BCP "EXECUTE [F0902].[D365O].[Get-F0911NewRecordsByBatchNumber] '''+ cast(@JDEBatchNumber as varchar(64))+''' QUERYOUT "D:\D365O\DataSource\F0911\Input\'+@TimeStamp+'.csv" -c -t\^, -T -S' + @@SERVERNAME + ''
    

    【讨论】:

    • 感谢您的及时回复。第一个脚本我在导出时遇到错误,它没有导出第二个脚本我得到以下用法:BCP {dbtable |查询} {在 |出|查询 |格式} 数据文件 [-m maxerrors] [-f 格式文件] [-e errfile] [-F firstrow] [-L lastrow] [-b batchsize] [-n 本机类型] [-c 字符类型] [-w 宽字符type] [-N 保持非文本原生] [-V 文件格式版本] [-q 引用标识符]
    • 您将不得不为您的 BCP 找出引号。看起来你可能在最后缺少 " 因为你有 BCP "Execute... but no closing "
    猜你喜欢
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多