oracle - 具有用户功能条件的 MS Access 查询停止处理 odbc 数据
问题描述
我在 MS Access 查询生成器中工作。我正在使用用户定义的函数来返回要搜索的括号中的字符组。例如,标准线是
Like Tcode()
并且函数 Tcode() 是
Function Tcode() As String
Tcode = "[AC]"
End Function
如果我创建一个包含 3 个单字符数据行的本地数据表
A
B
C
并使用此条件对该列运行查询,我根据需要只得到 A 和 C 的行。如果我按照以下标准运行它
Like "[AC]"
根据需要,我也只得到 A 和 C 的行。当我对我们拥有的 ODBC Oracle 表运行查询时,问题就出现了。如果我使用 Like "[AC]" 的标准,那么我会得到 A 和 C 的结果。如果我使用 like Tcode() 的标准,那么我不会得到任何结果。我在 Tcode 的返回值上尝试了几种变体,但均未成功:
Tcode 返回 [AC] 无结果
Tcode 返回 "[AC]" 无结果
Tcode 返回 [[AC]] 无结果
Tcode 返回 [A] 无结果
Tcode 在所有带有 A 的行中返回 A 结果
我想动态构建 Tcode 返回值,以根据用户在其他表单上的输入获得不同的结果。为什么它在 odbc 表上不起作用?我也接受一种建立搜索的方法
在('A','C')
或者
“A”或“C”
但我不知道如何使用函数来实现它。
编辑:甲骨文版本
Oracle Database 12c 企业版版本 12.1.0.2.0 - 64 位生产
PL/SQL 版本 12.1.0.2.0 - IBM/AIX RISC System/6000 的生产
“CORE 12.1.0.2.0 生产”
TNS:版本 12.1.0.2.0 - 生产
NLSRTL 版本 12.1.0.2.0 - 生产
客户端驱动程序 19.5
解决方案
有趣的。我只能为您提供帮助,因为通常 ODBC 不是问题。
它适用于 Sql Server 表:
CREATE TABLE foobar (
T varchar(10) PRIMARY KEY
);
使用 SQL Server 的 ODBC 驱动程序 17 在 Access 中链接,包含上述值 A、B、C。
这个查询:
SELECT T
FROM foobar
WHERE T Like Tcode()
返回值 A+C (使用问题中定义的函数)。
所以一定是Oracle ODBC驱动的问题。
您可能应该指定您使用的 Oracle 版本和 ODBC 驱动程序。
请注意,您不能将IN
子句与函数一起使用,请参阅https://stackoverflow.com/a/63054220/3820271