【问题标题】:Oracle function or package to execute SQL and return records执行 SQL 并返回记录的 Oracle 函数或包
【发布时间】: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


【解决方案1】:

您可以访问 Linux 吗?

如果您已经创建了语句并且您只需要在输出中选择 select 的结果。 最美丽的任务是做:

SPOOL /my_file.csv>

The below mentioned SELECT

阀芯关闭;

如果您创建如下 SELECT 语句:

SELECT col1 || ';' || col2 || ';' || ... || ';' || coln FROM MY_TABLE;

无论您在何处运行 Oracle,您都将拥有 CSV 文件。

如果您必须使用变量创建 SELECT STATEMENT, 您必须使用 REFCURSOR。

问候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多