使用 cfqueryparam 值转储 cfquery sql
Dump cfquery sql with cfqueryparam values
我想转储执行的sql。我知道几种转储 sql 的方法,但是我知道的所有方法都将 cfqueryparam 显示为 ?在 sql。例如,当我转储此查询时:
<cfset testid = 1>
<cfquery name="myVariable" result="myResults" datasource="#myDatabase#">
select id from myTable where id = <cfqueryparam value="#testId#">
<cfquery>
输出为:
select id from myTable where id = ?
我希望输出为:
select id from myTable where id = 1
我尝试了以下方法:
<Cfdump var="#myVariable.getMetadata().getExtendedMetaData().sql#">
<Cfdump var="#myResults.SQL#">
两者均无效。
在你的转储中试试这个 var = "#myResults.SQLParameters#"
我不确定是否有本机解决方案来获取包含 参数的已执行 SQL 字符串 。也许有一个我不知道的基础 Java class(如果你启用了调试,我认为有一个)。
否则您可以从结果结构中获取 sql
和 sqlParameters
键并自己构建它。我认为不理想,但可以选择。
<cfset testid = 1>
<cfquery name="myVariable" result="myResults" datasource="#myDatabase#">
select id from myTable where id = <cfqueryparam value="#testId#">
<cfquery>
<cfset completeQuery = myResults.sql>
<cfloop index="element" array="#myResults.sqlParameters#">
<!--- Test for numeric value to help format in the SQL string --->
<cfset completeQuery = replace(completeQuery, "?", (isNumeric(element)) ? element : "'#element#'", "one")>
</cfloop>
<cfdump var="#completeQuery#">
我想转储执行的sql。我知道几种转储 sql 的方法,但是我知道的所有方法都将 cfqueryparam 显示为 ?在 sql。例如,当我转储此查询时:
<cfset testid = 1>
<cfquery name="myVariable" result="myResults" datasource="#myDatabase#">
select id from myTable where id = <cfqueryparam value="#testId#">
<cfquery>
输出为:
select id from myTable where id = ?
我希望输出为:
select id from myTable where id = 1
我尝试了以下方法:
<Cfdump var="#myVariable.getMetadata().getExtendedMetaData().sql#">
<Cfdump var="#myResults.SQL#">
两者均无效。
在你的转储中试试这个 var = "#myResults.SQLParameters#"
我不确定是否有本机解决方案来获取包含 参数的已执行 SQL 字符串 。也许有一个我不知道的基础 Java class(如果你启用了调试,我认为有一个)。
否则您可以从结果结构中获取 sql
和 sqlParameters
键并自己构建它。我认为不理想,但可以选择。
<cfset testid = 1>
<cfquery name="myVariable" result="myResults" datasource="#myDatabase#">
select id from myTable where id = <cfqueryparam value="#testId#">
<cfquery>
<cfset completeQuery = myResults.sql>
<cfloop index="element" array="#myResults.sqlParameters#">
<!--- Test for numeric value to help format in the SQL string --->
<cfset completeQuery = replace(completeQuery, "?", (isNumeric(element)) ? element : "'#element#'", "one")>
</cfloop>
<cfdump var="#completeQuery#">