【问题标题】:Unknown Sql Exception (Number = 102, Message=Incorrect syntax near ','.)未知的 Sql 异常(编号 = 102,消息 = ',' 附近的语法不正确。)
【发布时间】:2019-10-07 07:01:07
【问题描述】:

我在 ',' 附近遇到了这个语法错误

我已经尝试了一些解决方案,因为这个问题之前已经在这个论坛中提出过,但无济于事。

string sqlSelect = "SELECT"
+ " 'RI' AS DocType, DebtorCode, DocNo, DocDate, [Description]"
+ ",SalesAgent, LocalNetTotal AS LocalAmount,"
+ "(Outstanding * CurrencyRate) AS LocalBalance"
+ " FROM ARINVOICE"
+ " WHERE Cancelled = 'F'"
+ " UNION"
+ " SELECT 'RD' AS DocType, DebtorCode, DocNo, DocDate, [Description]"
+ ",SalesAgent, LocalNetTotal AS LocalAmount"
+ ",Outstanding AS LocalBalance"
+ " FROM ARDN"
+ " WHERE Cancelled = 'F'"
+ " UNION"
+ " SELECT 'RC' AS DocType, DebtorCode, DocNo, DocDate, [Description]"
+ ",'' AS SalesAgent, LocalNetTotal AS LocalAmount"
+ ",(NetTotal - KnockOffAmt + RefundAmt) * CurrencyRate AS LocalBalance"
+ " FROM ARCN"
+ " WHERE Cancelled = 'F'"
+ " UNION"
+ " SELECT 'RP' AS 'DocType', 'DebtorCode', 'DocNo', 'DocDate', 
[Description]"
+ ",'' AS SalesAgent, LocalPaymentAmt AS LocalAmount"
+ ",LocalUnappliedAmount AS LocalBalance"
+ " FROM ARPAYMENT"
+ " WHERE Cancelled = 'F'";

他们对我的查询有什么问题吗?因为我已经检查了 2 天,没有发现任何错误,我不知道。 希望任何人都可以提供帮助。

【问题讨论】:

  • 错误信息是什么?你能显示完整的查询吗?您似乎在声明 @sqlSelect 时错过了 @。为什么要用双引号而不是单引号?
  • 我还想问为什么双引号而不是单引号..

标签: sql sql-server-2008 syntax syntax-error


【解决方案1】:

你试过取消引用 DocType 吗?

string sqlSelect = "SELECT"
+ " 'RI' AS DocType, DebtorCode, DocNo, DocDate, [Description]"
+ ",SalesAgent, LocalNetTotal AS LocalAmount,"
+ "(Outstanding * CurrencyRate) AS LocalBalance"
+ " FROM ARINVOICE"
+ " WHERE Cancelled = 'F'"
+ " UNION"
+ " SELECT 'RD' AS DocType, DebtorCode, DocNo, DocDate, [Description]"
+ ",SalesAgent, LocalNetTotal AS LocalAmount"
+ ",Outstanding AS LocalBalance"
+ " FROM ARDN"
+ " WHERE Cancelled = 'F'"
+ " UNION"
+ " SELECT 'RC' AS DocType, DebtorCode, DocNo, DocDate, [Description]"
+ ",'' AS SalesAgent, LocalNetTotal AS LocalAmount"
+ ",(NetTotal - KnockOffAmt + RefundAmt) * CurrencyRate AS LocalBalance"
+ " FROM ARCN"
+ " WHERE Cancelled = 'F'"
+ " UNION"
+ " SELECT 'RP' AS DocType, DebtorCode, DocNo, DocDate, 
[Description]"
+ ",'' AS SalesAgent, LocalPaymentAmt AS LocalAmount"
+ ",LocalUnappliedAmount AS LocalBalance"
+ " FROM ARPAYMENT"
+ " WHERE Cancelled = 'F'";

【讨论】:

    【解决方案2】:

    在 SQL SERVER 中,检查以下脚本-

    declare @sqlSelect nvarchar(max)
    select @sqlSelect = N' 
    SELECT ''RI'' AS DocType,DebtorCode,DocNo,DocDate,[Description],SalesAgent,LocalNetTotal AS LocalAmount,
    (Outstanding * CurrencyRate) AS LocalBalance 
    FROM ARINVOICE WHERE Cancelled = ''F''
    UNION
    SELECT ''RD'' AS DocType,DebtorCode,DocNo,DocDate,[Description],SalesAgent,LocalNetTotal AS LocalAmount,Outstanding AS LocalBalance
    FROM ARDN WHERE Cancelled = ''F''
    UNION
    SELECT ''RC'' AS DocType,DebtorCode,DocNo,DocDate,[Description],'''' AS SalesAgent,LocalNetTotal AS LocalAmount,
    ((NetTotal - KnockOffAmt + RefundAmt) * CurrencyRate) AS LocalBalance
    FROM ARCN WHERE Cancelled = ''F''
    UNION
    SELECT ''RP'' AS DocType,DebtorCode,DocNo,DocDate,[Description],'''' AS SalesAgent,LocalPaymentAmt AS LocalAmount,
    LocalUnappliedAmount AS LocalBalance
    FROM ARPAYMENT WHERE Cancelled = ''F'' '
    
    print (@sqlSelect)
    
    --exec (@sqlSelect)
    

    【讨论】:

      猜你喜欢
      • 2018-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      • 2013-12-12
      • 1970-01-01
      • 2019-06-30
      • 2016-10-28
      相关资源
      最近更新 更多