【发布时间】:2021-02-24 07:22:36
【问题描述】:
我需要从 Excel 调用一个包或函数,并在服务器上而不是在本地计算机上进行处理。为此,我需要将 SELECT SQL 语句传递给包或函数,它会返回记录集。
原因是我们有 100 条 SQL 语句当前在 Excel 中处理,但由于 VPN 速度慢,它们需要更长的时间。我尝试使用单个包在调用时运行 SQL,它明显更快。任何仅将 SELECT SQL 语句传递给函数并仅返回记录的方法都会有很大帮助。
Oracle 版本 11。
【问题讨论】:
-
通过 VPN 运行只会影响服务器结果的吞吐量;它不会影响 SQL 在数据库中运行的效率。你能用代码和结果发布一个具体的例子来说明你的意思吗?您是说 Excel 中的 SQL 正在针对Excel 中的记录运行,而您希望它针对数据库中的记录运行?
-
所有数据都在oracle数据库中。 SQL 在 excel vba 中,我连接到数据库以运行它,将记录输出到空工作表。对于“复杂”的选择 SQL,在 VPN 上花费的时间是在联网 PC 上的 20 倍。从 1 个表中进行简单 SELECT 仍然相对较快。所以,我做了一个概念证明来测试这个理论。我有一个在 Excel VBA 中运行的 SQL,它需要 10 秒来处理。我制作了一个运行特定 SQL 并构建行表的包,从 Excel 调用包以获取记录需要 1.3 秒。
-
这实际上没有任何意义,就与 VPN 有任何关系。 VPN 只影响网络带宽,而不影响服务器处理请求的能力。 SQL 本身或测试它的环境必须有所不同(例如 SQL 会话参数、资源配额等)。您是否从 Excel 中通过 VPN 运行该程序包,并以 85% 的速度将完全相同的结果返回到 Excel?请发布一些代码示例,说明您对 PL/SQL 包所做的操作与 Excel 中的原始 SQL 的对比,以及您如何调用它。
-
这是一个听起来很有趣的问题,但远远超出了我们在这个网站上所能回答的范围。而不是一个问题,你应该把它变成一个简短的咨询演出的广告。
-
“我需要从 Excel 中调用一个包或函数,并导致在服务器上而不是在本地机器上进行处理。” SQL 的处理 在服务器上完成,无论您是在调用过程还是只是要求服务器执行普通的 SELECT。我同意其他人的观点,其他事情正在发生。但如果我们看不到代码,我们就无能为力了。
标签: sql vba oracle function package