问题标签 [plsql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
6218 浏览

sql - 将复杂的 Oracle PL/SQL 游标逻辑封装为视图的最佳方法?

我编写了 PL/SQL 代码来将表非规范化为更易于查询的形式。该代码使用一个临时表来完成它的一些工作,将原始表中的一些行合并在一起。

该逻辑按照链接文章中的模式编写为流水线表函数。table 函数使用PRAGMA AUTONOMOUS_TRANSACTION声明来允许临时表操作,并且还接受游标输入参数以将非规范化限制为某些 ID 值。

然后我创建了一个视图来查询表函数,将所有可能的 ID 值作为游标传递(该函数的其他用途将更具限制性)。

我的问题:这一切真的有必要吗?我是否完全错过了完成同一件事的更简单的方法?

每次我接触 PL/SQL 时,我都会觉得我打字太多了。

更新:我将添加我正在处理的表格的草图,让每个人都了解我正在谈论的非规范化。该表存储员工工作的历史记录,每个工作都有一个激活行和(可能)一个终止行。员工可能同时拥有多个工作,以及在不连续的日期范围内一遍又一遍地从事相同的工作。例如:

查询它以找出谁在做什么工作是不平凡的。EMP_ID因此,对于通过游标传入的任何 s,我的非规范化函数仅使用每个作业的日期范围填充临时表。传入EMP_IDs 1 和 2 将产生以下结果:

END_DATE允许NULLs 用于没有预定终止日期的工作。)

可以想象,这种非规范化的形式查询起来要容易得多,但是创建它——据我所知——需要一个临时表来存储中间结果(例如,激活行已被激活的作业记录)找到了,但没有终止……还没有)。使用流水线表函数填充临时表,然后返回其行是我想出的唯一方法。

0 投票
5 回答
6255 浏览

json - 您推荐哪些用于自动生成 JSON 的 PL/SQL 库?

是否有任何您使用过并发现有用的用于 JSON 的良好 PL/SQL 库?

PL/SQL中,我不得不繁琐地将JSON值返回给 JavaScript 函数的代码。我找到了一个用于自动生成 JSON 的 PL/SQL 库,但它并不能完全满足我的所有需求。例如,我无法扩展库中的基本函数来返回我正在使用的 JavaScript 树组件所需的复杂的树状 JSON 数据结构。

注意:
该系统已经投入生产超过 8 年,其架构设计为使用 PL/SQL 处理 CRUD 和大部分业务逻辑。PL/SQL 还使用 mod PL/SQL 生成 90% 的表示层 (HTML/JavaScript)。另外 10% 是通过 Oracle Reports Builder 完成的报告数据。

0 投票
5 回答
2834 浏览

oracle - 格式化存储过程

我目前使用 Oracle 数据库,我们对所有 SQL 查询都使用存储过程。我遇到的问题是我们并没有真正为我们的包制定编码标准。所以发生的情况是,每个开发人员在格式化包的方式上都有不同的风格(或者在某些情况下没有风格感)。使它们难以阅读和工作,而无需先重新格式化。我们几乎都只是使用 Notepad 或 Notepad2 来编写我们的包。

不幸的是,我无法强制执行编码标准并强制执行它(此时只是一个代码猴子),所以我希望找到一个我可以自己使用的免费 SQL 代码格式化程序,并可能建议团队中的其他人使用,让我的生活更轻松。

我曾考虑编写一个小型应用程序,该应用程序基本上将文件作为输入并重新格式化所有内容,但在我这样做之前,我想我会问是否有人新使用这样的工具,该工具已经可用并且是免费的。

那么现在有人可以使用任何此类工具吗?

0 投票
4 回答
15312 浏览

sql - 从 Oracle PL/SQL 使用 Web 服务

如今,我们的应用程序正在与许多 Web 服务交互。我们有自己的包,几年前有人使用 UTL_HTTP 编写了它,它通常可以工作,但需要对 SOAP 信封进行一些硬编码才能与某些系统一起使用。我想让它更通用,但缺乏经验知道我必须处理多少场景。变化在于需要声明的命名空间和元素的格式。我们必须处理带有少量参数的简单调用和在编码字符串中传递大量数据的调用。

我知道 10g 有 UTL_DBWS,但没有大量的在线用例。它是否足够稳定和灵活以供一般使用?文档

0 投票
2 回答
2881 浏览

oracle - PLS-00306(错误的参数数量或类型)调用游标

我想我可能在这里遗漏了一些东西。这是触发器的相关部分:

这是我要回来的错误消息,

如果我正确理解了文档,那应该可以,但是既然不是,我一定是做错了什么。有任何想法吗?


@ Matthew - 我很感激你的帮助,但我感到困惑的原因是这段代码对我不起作用并且引发了引用的错误。我们在数据库中有其他触发器的代码几乎完全一样,所以我不确定这是我做错了什么,还是我试图存储触发器的方式等等。


@Matthew -好吧,现在我感到很尴尬。我将您提供的代码复制/粘贴到新触发器中,效果很好。所以我回到原来的触发器并尝试它并再次收到错误消息,除了这次我开始从触发器中删除东西并且在摆脱这条线之后,

东西保存得很好。所以事实证明,我认为错误在哪里,实际上并不是错误在哪里。

0 投票
3 回答
2168 浏览

oracle - 如何从 Lisp 运行 Oracle plsql 过程?

我该如何开始?

0 投票
8 回答
12238 浏览

java - 什么时候应该在 Oracle 数据库中使用 java 存储过程……有什么缺点?

PL/SQL 不是我的母语。Oracle 支持用 Java 编写存储过程。与在 PL/SQL 中编写存储过程相比,这样做有什么优势

0 投票
16 回答
138271 浏览

oracle - Oracle中的显式游标和隐式游标有什么区别?

我对 PL/SQL 中的光标术语有点生疏。有人知道吗?

0 投票
11 回答
5148 浏览

oracle - 完全用 PL/SQL 编写大型批处理程序是不是很愚蠢?

我正在着手开发一个程序,该程序可能最自然地描述为对数据库表的一批计算,并将每月执行一次。所有输入都在 Oracle 数据库表中,所有输出都将在 Oracle 数据库表中。该程序应在未来许多年内保持可维护性。

将其实现为一系列存储过程似乎很简单,每个存储过程都执行合理的转换,例如根据某些业务规则在部门之间分配成本。然后我可以编写单元测试来检查每个转换的输出是否符合我的预期。

在 PL/SQL 中完成这一切是不是一个坏主意?您是否愿意使用典型的面向对象编程语言(例如 C#)进行大量的批量计算?使用以数据库为中心的编程语言(例如 PL/SQL)不是更有表现力吗?

0 投票
5 回答
2871 浏览

oracle - 如何避免 PLSQ 中未使用参数的警告?

有时,在 PL SQL 中,您希望将参数添加到包、函数或过程中,以便为将来的功能做好准备。例如:

它可能会导致很多警告,例如

避免这些警告的最佳方法是什么?