关于在转换为ColdFusion 2016的代码分析过程中遇到的错误

时间:2017-07-12 12:30:45

标签: coldfusion

在我们的代码库中使用ColdFusion 2016的代码分析器后,它给出了以下错误。

  

否_ [B5O]错误使用WRITELOG函数.WRITELOG函数不能用于替换语句。

<cfoutput>#writeLog("DS001", "#This.Name#", "SDC601", ArrayNew(1))#</cfoutput>

这个错误是什么意思?我需要做些什么才能解决问题?

我们正在从ColdFusion 7迁移到ColdFusion 2016.

1 个答案:

答案 0 :(得分:0)

您如何/为何在<cfscript>代码中使用<cfoutput>语法?如果您的代码位于writelog代码内,那么<cflog>代码将无效。无论如何,在调用WriteLog (text, type, application, file, log) writeLog("DS001", "#This.Name#", "SDC601", ArrayNew(1)) 函数时不需要这些标记。这让我相信你分享的代码不是真正的代码。

似乎您的函数调用值不正确。不确定在ColdFusion 7中是如何工作的(再次,这可能不是实际代码的一个例子)。以下是摘录from the documentation for the writelog function

  

功能语法

text        = "DS001"
type        = "#This.Name#"
application = "SDC601"
file        = ArrayNew(1)
log         = 
     

对于位置表示法,必须严格按照语法中提供的顺序执行序列。如果您未提供其中一个参数,请改用空字符串。这不适用于必须提供正确值的布尔值,即使您必须跳过它们。

您分享的代码是:

    SELECT * FROM (
    SELECT YEAR(CreateDate) [Year], MONTH(CreateDate) [Month], DATENAME(MONTH,CreateDate) [Month Name],COUNT(id) [Total], 
    CASE 
            WHEN PaymentStatus =  1 THEN 'Pending'
            WHEN PaymentStatus =  2 THEN 'Commited'
            WHEN PaymentStatus =  3 THEN 'Confirmed'
            WHEN PaymentStatus =  4 THEN 'Canceled'
            WHEN PaymentStatus =  5 THEN 'Failed'
            ELSE ''
        END AS  PaymentStatus,count(ID) as counts 
    FROM [dbo].[BankPaymentRequest]
    GROUP BY YEAR(CreateDate), MONTH(CreateDate), DATENAME(MONTH, CreateDate), PaymentStatus) as asd
    PIVOT( SUM(counts) 
    FOR PaymentStatus IN ([Pending],[Commited],[Confirmed],[Canceled],[Failed])) AS MNamePivot

这意味着您正在使用位置表示法,ColdFusion将其解释为:

Year Month Total Pending Commited   Confirmed   Canceled Failed
2016  Jan  34      1        4            63          840      157
2016  Feb  34      8        4            62          8        15
2016  Mar  65      1        4            63          840      157
2016  Dec  56      8        4            62          8        15
2017  Jan  78      1        4            63          840      157
2017  Feb  89      8        4            62          8        15
2017  Mar  67      1        4            63          840      157
2017  Dec   8      4        62           8           15       345

需要修改代码,以便在使用该语法时以正确的顺序传递值。而且我不确定你为什么要尝试将空数组传递给函数。没有属性接受数组。