gpt4 book ai didi

sql - VBA 和 Oracle SQL : ORA-00907: Missing Right Parenthesis

转载 作者:行者123 更新时间:2023-12-04 13:14:01 33 4
gpt4 key购买 nike

我在 Oracle 中编写了一些基本的 SQL,它按预期运行。它会选择一个客户、他们的 ID 以及他们可以提供的“服务”。

但是,当我添加从 VBA 代码传递的变量时,会出现错误消息 ORA-00907: Missing Right Parenthesis。这是由于代码中的 OR

AND C.CURRENCY LIKE :cmbSelectAccountCcy
AND (S.SERVICEID LIKE :cmbSelectServiceType OR S.SERVICEID LIKE :cmbSelectServiceType2)
AND .... etc

如果我删除 OR,它会按预期运行。 OR 是检查的一部分,包括(最后)

HAVING COUNT(S.SERVICEID) > 2

允许检查 2 个值,并且仅当存在 2 个(或更多)时才显示客户端。

Excel 中的组合框会将服务 ID 作为下拉框中的设置值或 % 字符传递。我假设在某些情况下永远不会达到正确的括号。

为什么我可以使用硬编码值运行 SQL 查询,但不能通过 VBA 传递完全相同的变量?我在 VBA 中有一个 Debug.Print() 语句,它显示了我希望看到的所有传递过来的值。


更新:

将名称 cmbSelectServiceType2 更改为 cmbServiceTypeTwo 似乎已经解决了这个问题,但到目前为止,我还不知道为什么。任何答案仍然赞赏!我能看到的唯一因素是第一个是 21 个字符,第二个是 < 20 个字符。表中的列数据类型为 VARCHAR2。

切线:OR 语句现在返回 Service1 或 Service1 和 Service2 或 Service2,即完全 OR 语句。上面的 HAVING 子句试图强加只允许 BOTH。


更新 2

将 cmbSelectServiceType2 中的“2”更改为字母“二”无效。似乎 20 个字符是任意限制。

最佳答案

根据:

Getting around the Max String size in a vba function?

vba 函数无法处理超过 255 个字符的字符串,这是否可能导致问题,特别是当您削减它起作用的字符串长度时。

关于sql - VBA 和 Oracle SQL : ORA-00907: Missing Right Parenthesis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28692680/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com