Sql 提供的值的列名或数目与表定义不匹配
我有一个存储过程,我对其进行了更改,并在存储过程中添加了2个新的表单字段 然后成功地运行了它 现在,当我撤销存储的proc并运行时,它会成功运行,但会在coldfusion中运行 它给出了错误Sql 提供的值的列名或数目与表定义不匹配,sql,coldfusion,Sql,Coldfusion,我有一个存储过程,我对其进行了更改,并在存储过程中添加了2个新的表单字段 然后成功地运行了它 现在,当我撤销存储的proc并运行时,它会成功运行,但会在coldfusion中运行 它给出了错误 [Macromedia][SQLServer JDBC Driver][SQLServer]Insert Error: Column name or number of supplied values does not match table definition. 90 : <cfp
[Macromedia][SQLServer JDBC Driver][SQLServer]Insert Error: Column name or number of supplied values does not match table definition.
90 : <cfprocparam type="in" cfsqltype="CF_SQL_INTEGER" dbvarname="@reportMonth" value="#xxMDB#">
91 : <cfprocparam type="in" cfsqltype="CF_SQL_INTEGER" dbvarname="@orderBy" value="#xxOBDB#">
92 : **<cfprocresult name="xxResult">**
93 : </cfstoredproc>
[Macromedia][SQLServer JDBC Driver][SQLServer]插入错误:提供的值的列名或数量与表定义不匹配。
90 :
91 :
92 : ****
93 :
自ColdFusion MX以来:
更改了dbvarname属性
行为:它现在被所有人忽略
司机。ColdFusion使用JDBC2.2和
不支持命名参数
我同意您应该删除dbVarname并使用位置符号。我知道您说过该过程已成功运行,但“插入错误:…”看起来像是直接的数据库错误。建议在过程的sql中出现问题。dbvarname=“@orderBy”还表明您的过程可能正在使用动态sql。它是?动态sql的问题更难调试,也容易遗漏。如果您的CF代码值与初始测试中使用的值不同或顺序不同,那么它可能会解释为什么该过程一开始似乎是有效的。(我不喜欢动态sql)@Henry:+1,cfquickdocs还可以获得一个虚拟加分:非常好,谢谢。@dan:它过去能用并不意味着它现在还能用。Coldfusion 6(又名MX)与以前的版本相比有很大的变化。它们很好地保持了兼容性,但并非所有地方都如此。CF管理员中有一个“代码分析器”(在“调试和日志记录”下),它可以在您的旧代码中指出这些类型的内容。感谢henry提供的链接和tomalak提供的CFadmin路径。今天早上,当SQL server重新启动一次时,错误得到纠正。在此之前,还有一个未检测到的数据库错误