查询cf queryObject并插入表中

时间:2017-10-17 22:42:48

标签: mysql coldfusion railo lucee

我将queryObject传递给CFC。我可以writeDump(myQryObject),我看到queryObjects的内容,到目前为止一切都很好。我可以编写一个select语句并根据我的查询转储一行 - 再次,这里都很好。我现在需要将数据插入表中,但我没有正确的语法。

CFC是用CFScript编写的。

local.blkLoadQry = new Query(); // new query object     
local.blkLoadQry.setDBType("query");
local.blkLoadQry.setAttributes(sourceQuery=arguments.blkdata);
local.blkLoadQry.addParam(name="batchid",value=arguments.batchID,cfsqltype="cf_sql_varchar",maxlength="36");

local.blkLoadQry.setSQL("
INSERT INTO bulkloadtemptable (
      uuid
      , gradyear
      , firstName
      , lastName
      , email
  )
  SELECT 
      :batchid
      , `Graduation Year`
      , `Jersey`
      , `First Name`
      , `Last Name`
      , `Email`
  FROM 
      bulkloadtemptable_copy
  WHERE uuid = :batchid
");

`Lexical error at line 10, column 17. Encountered: "`" (96), after : ""`

这是我遇到的错误,但错误的行号不符合我的期望,这就是我的理由。 :batchid将是第10行。

我错过了什么?

1 个答案:

答案 0 :(得分:3)

你正在尝试一些不可能的事情。您的查询查询select语句仅在ColdFusion中运行。游戏中没有数据库连接。

如果要将ColdFusion查询中的数据插入数据库,则必须以某种方式遍历行。您可以在循环内部插入查询或在插入查询内部循环。以下是两者的示例语法。

查询内部循环。

<cfoutput query="cfQueryObject">
<cfquery datasource = "aRealDatabase">
insert into table
(field1
, field2
, etc)
values
(<cfqueryparam value = "#cfQueryObject.field1#">
, <cfqueryparam value = "#cfQueryObject.field1#">
, etc
)
</cfquery>
</cfoutput>

循环查询

<cfquery datasource = "aRealDatabase">
insert into table
(field1
, field2
, etc)

select null
, null
, etc
from someSmallTable
where 1 = 2
<cfoutput query="cfQueryObject">
union
select <cfqueryparam value = "#cfQueryObject.field1#">
, <cfqueryparam value = "#cfQueryObject.field1#">
, etc
from someSmallTable
</cfoutput>
</cfquery>

您可以尝试在您的情况下查看哪些更有效。