首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cfqueryparam行为怪异

cfqueryparam行为怪异
EN

Stack Overflow用户
提问于 2012-08-13 15:01:50
回答 1查看 997关注 0票数 2

我在coldfusion中运行更新查询时遇到了问题。对于CFSQLTYPE CF_SQL_NUMERIC,说无效数据'‘是一个错误。我知道数据是数字的,因为我在错误之前输出它,而且它是正确的。我将变量设置如下:

代码语言:javascript
复制
<cfset itemID = FORM.itemID * 1> <!--- The * 1 is to force a numeric operation, and
therefore a numeric datatype, and like I said, it outputs right. --->

<!--- This is the line (45) the error says is bad --->
WHERE itemid = <cfqueryparam value="#itemID#" cfsqltype="CF_SQL_NUMERIC">

发生的一件奇怪的事情是,如果我将cfqueryparam改为varchar,我仍然会得到相同的错误!!

代码语言:javascript
复制
WHERE itemid = <cfqueryparam value="#itemID#" cfsqltype="CF_SQL_VARCHAR">

更奇怪的是,当我完全取出cfqueryparam并使用一个数字时,出现了一个新的错误,即(44)之前的行现在是坏的:

代码语言:javascript
复制
WHERE itemid = 20072 <!--- Changing to this produces a new error on the line before --->

<!--- Line 44, which is also using a cfqueryparam numeric. This new error is the same
as before, but on line 44 now instead of 45. --->
min_qty = <cfqueryparam value="#FORM.itemMinQuantity#" cfsqltype="CF_SQL_NUMERIC">

知道怎么回事吗?

编辑更多代码..。

代码语言:javascript
复制
<cfquery name="qUpdateItem" datasource="#thedb#">
UPDATE items_something
SET
    itemdesc = <cfqueryparam value="#FORM.itemDescription#" cfsqltype="CF_SQL_VARCHAR">,
    room = <cfqueryparam value="#FORM.itemRoom#" cfsqltype="CF_SQL_VARCHAR">,
    value = <cfqueryparam value="#FORM.itemValue#" cfsqltype="CF_SQL_NUMERIC">,
    categoryid = <cfqueryparam value="#FORM.categoryID#" cfsqltype="CF_SQL_NUMERIC">,
    keywords = <cfqueryparam value="#FORM.itemKeywords#" cfsqltype="CF_SQL_VARCHAR">,
    manufact = <cfqueryparam value="#FORM.itemManufacturer#" cfsqltype="CF_SQL_VARCHAR">,
    partno = <cfqueryparam value="#FORM.itemPartNumber#" cfsqltype="CF_SQL_VARCHAR">,
    itemtitle = <cfqueryparam value="#FORM.itemTitle#" cfsqltype="CF_SQL_VARCHAR">,
    qty = <cfqueryparam value="#FORM.itemQty#" cfsqltype="CF_SQL_NUMERIC">,
    assembly_draw_no = <cfqueryparam value="#FORM.itemAssemblyDrawingNo#" cfsqltype="CF_SQL_NUMERIC">,
    bin = <cfqueryparam value="#FORM.itemBin#" cfsqltype="CF_SQL_VARCHAR">,
    shelf = <cfqueryparam value="#FORM.itemShelf#" cfsqltype="CF_SQL_VARCHAR">,
    min_qty = <cfqueryparam value="#FORM.itemMinQuantity#" cfsqltype="CF_SQL_NUMERIC">
WHERE itemid = <cfqueryparam value="#itemID#" cfsqltype="CF_SQL_NUMERIC">

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-13 15:09:19

这个问题可能与queryparam无关。执行语句最后一行的Oracle错误(通常是where、group或order子句)。如果您提供ORA-错误和您的表缺陷,这将有所帮助。

但是这个错误可能与queryparam没有任何关系。还有其他一些东西(连接中相同的列(例如,查询中两个表中的ID列)、缺少逗号等)。

编辑:

根据克林帕拉姆帮助页面中的文本,您可能希望尝试CF_SQL_FLOAT或CF_SQL_DECIMAL,因为CF_SQL_NUMERIC似乎与CF_SQL_NUMERIC没有直接关联。您也可以检查其他列。我不知道这是否能解释这件事,但我似乎还记得在过去看到过这种情况。

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

https://stackoverflow.com/questions/11936994

复制
相关文章

相似问题

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