在 Coldfusion 中使用来自动态命名变量的列名
Using column names from dynamically named variables in Coldfusion
我想创建一个函数,该函数将循环遍历任意查询并根据任意列名称向另一个 table 执行插入。
例如,这里的想法是输出
(data, data, data...)
(data, data, data...)
最终,我将执行插入查询。现在,我只想输出行。
编辑: 我不能只执行 INSERT/SELECT
因为产品数据和开发数据位于不同的服务器上。所以我必须首先从生产服务器上的 table 收集数据到一个 CF 查询对象中,然后循环遍历它并插入到开发服务器上的 table 中。
代码:
<cffunction name="copyProdToDev">
<cfargument name="devDatasource" >
<cfargument name="prodDataSource" type="string">
<cfargument name="devTableName" type="string">
<cfargument name="prodTableName" type="string">
<cfargument name="dateColumnName" default="none">
<cfquery name="ProdData" datasource="#prodDatasource#" timeout="60">
SELECT *
FROM #prodTableName#
</cfquery>
<cfset columnNames = ProdData.getColumnNames()>
<cfset numColumns = ArrayLen(columnNames)>
<cfloop query="#ProdData#">
(
<cfloop index="colNumber" from="1" to="#ArrayLen(columnNames)-1#">
<cfoutput><dynamic column name for colNumber>,</cfoutput>
</cfloop>
<cfoutput><dynamic column name for numColumns></cfoutput>
)<br />
</cfloop>
</cffunction>
您可以从这个变量中获取列表
ProdData.columnList
但请注意,并未完全遵守列的顺序,
这篇文章可能会有所帮助:http://www.bennadel.com/blog/644-query-columnlist-does-not-return-true-column-ordering.htm
数组符号是你的朋友。
<cfoutput>
<cfloop query = "ProdData">
<cfloop array = "#ProdData.getColumnList()#" index = columnName>
#prodData[columnName][currentrow]#
closing tags and formatting stuff
我想创建一个函数,该函数将循环遍历任意查询并根据任意列名称向另一个 table 执行插入。
例如,这里的想法是输出
(data, data, data...)
(data, data, data...)
最终,我将执行插入查询。现在,我只想输出行。
编辑: 我不能只执行 INSERT/SELECT
因为产品数据和开发数据位于不同的服务器上。所以我必须首先从生产服务器上的 table 收集数据到一个 CF 查询对象中,然后循环遍历它并插入到开发服务器上的 table 中。
代码:
<cffunction name="copyProdToDev">
<cfargument name="devDatasource" >
<cfargument name="prodDataSource" type="string">
<cfargument name="devTableName" type="string">
<cfargument name="prodTableName" type="string">
<cfargument name="dateColumnName" default="none">
<cfquery name="ProdData" datasource="#prodDatasource#" timeout="60">
SELECT *
FROM #prodTableName#
</cfquery>
<cfset columnNames = ProdData.getColumnNames()>
<cfset numColumns = ArrayLen(columnNames)>
<cfloop query="#ProdData#">
(
<cfloop index="colNumber" from="1" to="#ArrayLen(columnNames)-1#">
<cfoutput><dynamic column name for colNumber>,</cfoutput>
</cfloop>
<cfoutput><dynamic column name for numColumns></cfoutput>
)<br />
</cfloop>
</cffunction>
您可以从这个变量中获取列表
ProdData.columnList
但请注意,并未完全遵守列的顺序, 这篇文章可能会有所帮助:http://www.bennadel.com/blog/644-query-columnlist-does-not-return-true-column-ordering.htm
数组符号是你的朋友。
<cfoutput>
<cfloop query = "ProdData">
<cfloop array = "#ProdData.getColumnList()#" index = columnName>
#prodData[columnName][currentrow]#
closing tags and formatting stuff