SQL 更新表的参数数量错误

Posted

技术标签:

【中文标题】SQL 更新表的参数数量错误【英文标题】:Wrong number of Parameters for SQL Update Table 【发布时间】:2017-08-29 14:54:35 【问题描述】:

我正在尝试将不同表中的 ID 添加到表 RUSER_KSP_S_TI_ARP

strSQL = "UPDATE RUSER_KSP_S_TI_ARP 
          SET RUSER_KSP_S_TI_ARP.ID_FZG = TI_IDENTIFIKATION.ID_FZG,
              RUSER_KSP_S_TI_ARP.ID_PULK = TI_IDENTIFIKATION.ID_PULK 
              WHERE RUSER_KSP_S_TI_ARP.ARP = TI_IDENTIFIKATION.ARP 
              AND RUSER_KSP_S_TI_ARP.BTNR = TI_IDENTIFIKATION.BTNR;"
CurrentDb.Execute strSQL, dbFailOnError

返回错误 3061,表示它需要 4 个参数并且得到的参数很少。

感谢您的帮助!

【问题讨论】:

“TI_IDENTIFIKATION”的值从何而来? 你没有 FROM... 看过这个?同样的错误:***.com/questions/5445062/… @Stix,来自 TI_IDENTIFIKATION 的值来自与 Oracle 服务器中的 ODBC 链接的表。 【参考方案1】:

您需要加入 TI_INDENTIFICATION。

strSQL = "UPDATE ruser
          SET ruser.ID_FZG = ti.ID_FZG,
              ruser.ID_PULK = ti.ID_PULK
          FROM RUSER_KSP_S_TI_ARP ruser
          INNER JOIN TI_IDENTIFIKATION ti
                  ON ruser.ARP = ti.ARP AND ruser.BTNR = ti.BTNR;"
CurrentDb.Execute strSQL, dbFailOnError

【讨论】:

JOIN 不应该在 Access 中的 SET 之前吗? UPDATE RUSER_KSP_S_TI_ARP rUser INNER JOIN TI_IDENTIFIKATION ti ON ruser.ARP = ti.ARP AND ruser.BTNR = ti.BTNR SET ruser.ID_FZG = ti.ID_FZG, ruser.ID_PULK = ti.ID_PULK 不在例如微软 SQL 还不错,但标签是 Access。 公平地说,它在编辑之前也被标记为其他 RDBMS。 @DarrenBartrup-Cook 你是对的,Join 需要在 SET 之前。然后它工作。谢谢

以上是关于SQL 更新表的参数数量错误的主要内容,如果未能解决你的问题,请参考以下文章

来自另一个表的更新表上的SQL错误

SQL 存储过程编译错误:调用中的参数数量或类型错误

SQL Server修改表的时候出现错误:未更新任何行

PDO 更新错误无效参数号:绑定变量的数量与令牌的数量不匹配

SQL查询语法错误,使用另一个表的数据更新表[重复]

PLS-00306:调用 'GET_LINE' 时参数的数量或类型错误。在 PL/SQL 中的函数中传递字符串参数时出现此错误