首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子查询中CFQUERYPARAM的神秘错误

子查询中CFQUERYPARAM的神秘错误
EN

Stack Overflow用户
提问于 2012-02-07 19:39:50
回答 2查看 441关注 0票数 1

在带有子查询的查询上,我从Server获得了一个常见的错误,在子查询中有一个CFQUERYPARAM

具体错误是:

MacromediaODBC SocketSQL Server本机客户端10.0语法错误、权限冲突或其他非特定错误

我已经能够将其归结为这个查询(简化)。

代码语言:javascript
复制
<cfquery name="statusQuery" datasource="#application.dsn#">
SELECT 
    *
FROM 
    BStatus A  
WHERE 
    A.FY = <cfqueryparam cfsqltype="cf_sql_decimal" value="2012" > 
    AND 
    A.BStatus like '0%' 
    AND 
    A.BStatus != '00' 
    AND 
    A.BDate = (
            SELECT 
                MAX(B.BDate) 
            FROM BStatus B 
            WHERE 
                B.FY = <cfqueryparam cfsqltype="cf_sql_decimal" value="2012" > 
                AND 
                B.BStatus like '0%' 
                AND 
                B.BTrack = A.BTrack 
                AND 
                B.BCode = A.BCode 
    ) 
    AND 
    A.BCode ='XYZ123AB' 
</cfquery>

FY列被定义为decimal(4,0)。我试过每一个处理数字的cfsqltype (cf_sql_integer、cf_sql_numeric、cf_sql_real、cf_sql_float等)。结果都是一样的。

如果我将子查询中的CFQUERYPARAM更改为一个简单的值(例如,2012年),则查询工作正常。显然,非常喜欢而不是CFQUERYPARAM

  • ColdFusion 9.0
  • Server 2008

不幸的是,由于其他情况,我不能使用ColdFusion附带的Server驱动程序,但必须使用ODBC桥。数据库被定义为系统DSN。

ODBC桥是这里的原因吗?我在过去的项目中有过CFQUERYPARAM的子查询,所以这真的让我很不爽。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-08 14:30:22

正如我所怀疑的,关键似乎是ODBC桥。我使用Server驱动程序设置了一个不同的数据源,并且能够在子查询中毫无问题地使用CFQUERYPARAM

票数 0
EN

Stack Overflow用户

发布于 2012-02-07 19:56:16

你试过不同的cfsqltype类型了吗?我会尝试cf_sql_integer和cf_sql_varchar,看看这两种方法是否有效。我从未使用过_decimal,但是我使用过_float。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9182712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档