【问题标题】:Replace function requires 3 arguments替换函数需要 3 个参数
【发布时间】:2019-09-25 11:39:45
【问题描述】:

我正在尝试从 SQL 获取数据到 excel,它给了我以下错误 我在 SQL Server 中的查询

DECLARE @Delimiter Char(1)

SET @Delimiter = CHAR(9)

EXEC MSDB.dbo.sp_Send_DBMail
        @profile_name = 'K2MailSetup',        
        @Recipients='abs@test.com',        
        @Subject='Extraction Report',        
        @Body='Hi,
        Please find attached extraction report as required. ',        
        @Query='set nocount on;Select Coalesce(replace(replace(A.[type], char(10), ''), char(13), ''),'') as Type FROM [EU_OTH_REG].[dbo].[TBL_EU_OTH_TXN_REG_RSDS] A',
        @Attach_Query_Result_As_File = 1,        
        @Query_Result_Header = 1,        
        @Query_Attachment_Filename = 'Report.csv',        
        @Query_Result_Separator = @Delimiter,           
        @query_result_width =32767,
        @query_result_no_padding=1

================================================ ==========================

它给了我以下错误

Msg 22050, Level 16, State 1, Line 0
Error formatting query, probably invalid parameters
Msg 14661, Level 16, State 1, Procedure sp_send_dbmail, Line 517
Query execution failed: Msg 105, Level 15, State 1, Server MYKULK2DB01Q\MSSQLSTG, Line 1
Unclosed quotation mark after the character string ') as Type

            FROM [EU_OTH_REG].[dbo].[TBL_EU_OTH_TXN_REG_RSDS] A
'.
Msg 102, Level 15, State 1, Server MYKULK2DB01Q\MSSQLSTG, Line 1
Incorrect syntax near ') as Type

            FROM [EU_OTH_REG].[dbo].[TBL_EU_OTH_TXN_REG_RSDS] A

================================================ ==========================

奇怪的是,当我只是运行查询时,它会为我提供结果,但是当我尝试使用上述 excel 步骤和参数从中创建报告时,它给了我错误。

【问题讨论】:

  • 您的@Query 值中有一堆引号,您需要将它们转义。
  • 当像这样调试动态时,您应该评估使用 print 生成的动态 sql。它将快速隔离语法错误。

标签: sql sql-server excel replace parameter-passing


【解决方案1】:

您需要检查 @Query 变量中的引号。 我在下面替换了它; @Query='set nocount on;Select Coalesce(replace(replace(A.[type], char(10), ''''), char(13), ''''),'''') as Type FROM [EU_OTH_REG].[dbo].[TBL_EU_OTH_TXN_REG_RSDS] A'

【讨论】:

    【解决方案2】:

    来自文档:SQL Server Replace

    REPLACE() 的语法如下:

    REPLACE ( string_expression , string_pattern , string_replacement ) 
    

    如您所见,所有参数都应为字符串格式。确保所有参数都包含在 '' 中,以便您的脚本正常工作。

    【讨论】:

      猜你喜欢
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多