2
<cfquery name="LOCAL.qrySelEvents" datasource="#variables.datasourceSettings.getDatasourceName()#" result="LOCAL.qryData" >
    SELECT evt_id, 
           acnt_dba_name,
           form_id,
           '#application.portals.data[request.applicationName].profileRootPath#form/index.cfm' 
               || CHAR(63) 
               || 'PKformID= ' 
               || #preserveSingleQuotes(LOCAL.formIdSql)# AS primaryFormURL,
    FROM    events
</cfquery>

我必须将 #application.portals.data[request.applicationName].profileRootPath#form/index.cfm 与 char(32) 和 PKformID= ' || #preserveSingleQuotes(LOCAL.formIdSql)#。我使用过||postgres 的运算符。但这给了我一个错误:

错误:“||”处或附近的语法错误

你能帮我吗?

4

3 回答 3

3

select 子句的最后一行末尾有一个逗号。

于 2013-01-07T13:27:27.737 回答
1

好的,以及错误消息,如果你已经ROBUST EXCEPTION HANDLING打开(它在 CFAdmin 中),你应该取回 CF 传递给服务器的 SQL。这应该向您显示 SQL 中的语法错误。您还应该始终在您的问题中发布此信息,因此即使您看不到问题,其他人也可能能够看到。

现在我怀疑这是因为:

#preserveSingleQuotes(LOCAL.formIdSql)#

需要被视为一个字符串(它是),在这种情况下,您需要引用它以便 DB 将其视为一个字符串。IE:

'#preserveSingleQuotes(LOCAL.formIdSql)#'

鉴于整个值中没有以数据库为中心的引用:

`'#application.portals.data[request.applicationName].profileRootPath#form/index.cfm' || CHAR(63) || 'PKformID= ' || '#preserveSingleQuotes(LOCAL.formIdSql)#'`

我质疑为什么需要将它包含在 SELECT 查询中。您基本上只是将值传递给 SQL 服务器,然后再将其取回。所以我怀疑这里有些不对劲。你到底想在这里做什么?

于 2013-01-07T13:11:23.670 回答
0

雅终于得到了答案,CHAR(63) 在这方面造成了问题,因为 Sql-server CHAR 是一个从 ASCII 提供字符的函数,而在 postgresql 中,CHR() 函数可用于从 ASCII 提供字符。所以,新的查询是:

<cfquery name="LOCAL.qrySelEvents" datasource="#variables.datasourceSettings.getDatasourceName()#" result="LOCAL.qryData" >
    SELECT evt_id, 
           acnt_dba_name,
           form_id,
           '#application.portals.data[request.applicationName].profileRootPath#form/index.cfm' 
               || CHR(63) 
               || 'PKformID= ' 
               || #preserveSingleQuotes(LOCAL.formIdSql)# AS primaryFormURL
    FROM    events
</cfquery>

感谢您的支持。

于 2013-01-09T10:13:29.660 回答