问题标签 [pipelined-function]

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 投票
1 回答
4239 浏览

plsql - PLS-00653 空行错误(PL/SQL 范围内不允许聚合/表函数)

我正在尝试运行我制作的 PL/SQL 脚本,但出现错误:
PLS-00653: aggregate/table functions are not allowed in PL/SQL scope

这里的问题不是错误本身,而是错误所在的行。
这是我的 PL/SQL 块,它抛出了这个错误:

错误在 34:17 (line:column) 抛出,这是代码块末尾的第四行。如您所见,真正的问题是该行是空行。此外,该空行附近的任何行都不包含对聚合函数的调用。
那么聚合/表函数的调用在哪里呢?

我想知道问题是否真的来自我的代码,或者我的PL/SQL Developer是否损坏。

我希望有一个人可以帮助我...

0 投票
1 回答
483 浏览

oracle - ORACLE 表达式在流水线函数上的类型错误(多连接表)

我正在编写一个带有流水线函数的 Oracle 包来获取多条记录,查询是关于多个连接表的,它将保存到另一个表中,我为类型记录创建了一个TYPE RECORDTABLE TYPE,然后我创建了流水线函数与他们的查询,但是当我编译包时,我得到一个错误"表达式是错误的类型"

下面是定义包:

下面是正文包:

你能说我,我做错了什么吗?

0 投票
1 回答
1077 浏览

oracle - PLSQL流水线函数返回一个列表

我正在尝试创建一个函数来从我的数据库中获取值列表。经过一些研究,我发现我需要使用 PIPELINE 函数,并找到了一些示例。我完成了我的功能,但不知何故我遇到了 2 个我不明白的错误。

这是我的代码:

这些是我得到的错误:

[错误] PLS-00382:PLS-00382:表达式类型错误(在行:PIPE ROW (CUR);)

[错误] PLS-00201:PLS-00201:必须声明标识符“W_ROUNT_COUNT”

(在该行:W_ROUNT_COUNT := W_ROW_COUNT + 1;)

对于第一个错误,我三次检查并VALUE在我的表中有一个 type VARCHAR2(2000),就像我在开头声明我的类型一样(一个表VARCHAR2(2000))。

其次,我不明白,因为我W_ROW_COUNT在 IS 语句中声明了变量。

如果有人可以帮助我,那就太好了!谢谢

0 投票
0 回答
221 浏览

oracle - 用于返回行或 rowid 的 Oracle PL/SQL 函数

我想编写一个函数来返回可以在我的应用程序网格中显示的表记录。我的应用程序将忘记表格的结构。当有人向表中添加列或删除它们时,我希望它仍然有效。

在我的应用程序中,它看起来应该是这样的:

因此,该功能应类似于:

但是RETURN TABLE OF mytable%ROWTYPE是不允许的。必须创建一种 SQL 类型。

但是CREATE TYPE table_of_mytable_rows IS TABLE OF mytable%ROWTYPE也不允许。

那么,有没有办法实现我想要的呢?

作为替代方案,我想到了使用 ID。这将使我的应用程序的代码看起来像这样:

然后函数将是

但同样,RETURN TABLE OF UROWID是不允许的。也不是用CREATE TYPE table_of_rowids IS TABLE OF UROWID.

我知道我可以创建一个类似于表的主键列的对象类型,然后在这个对象上创建一个表类型。然后我的应用程序必须知道表的主键才能

我更希望我的函数返回表行或 rowid。这可能吗?

我目前仍在使用 Oracle 11.2,但我也对较新版本的解决方案感兴趣。

0 投票
2 回答
170 浏览

oracle - 如何使用光标创建流水线函数并返回表?

我有一个类似的表(这里有 9 列带有 ';'。这是示例表):

我需要像这样的目标表:

我找到了以下链接: 带有光标参数 oracle 的流水线函数,但我无法定期创建函数。我只为一列创建函数但不能循环,也不能调用表。这是我的功能:

你能给我一些建议吗?谢谢

0 投票
1 回答
155 浏览

c# - 流水线函数作为 EF/MVC 中的实体

我有一个使用实体框架的.Net MVC 应用程序,通常我会在数据实体中使用表或视图......例如。

...其中 company_details 是一个 oracle 表。

但是我需要尝试使用流水线函数....例如 sql 将是:

这已在 Oracle 表单中使用的报告中使用,但现在将包含在 .Net MVC 应用程序中。

如何在我的实体中包含流水线功能?

提前致谢

0 投票
1 回答
639 浏览

plsql - Oracle 19C 数据库问题

我有一个在 11g 版本中运行良好的包。

但是当我在 19c 版本中部署相同的包时,行为是不同的。

PFB 说明。

包规范有一个游标,并使用 cursor%rowtype 创建了一个表类型。具有返回表类型的流水线函数。

使用带有表子句的函数

这样返回值就可以作为一个表,我可以用列名读取结果。

在 11g 中,该函数返回与游标列名称相同的列标题。但在 19c 中,该函数返回列标题,如“Attr_1、Attr_2 等”。

我需要该函数将列标题作为光标列名称返回。

注意:代码非常敏感,不能共享。

样品:PFB 样品。

在 11g 中,上面的选择将列标题作为“id,描述”,但在 19c 中,我得到的是“ATTR_1,ATTR_2”。

请帮忙。

0 投票
1 回答
123 浏览

oracle - 独立流水线函数调用另一个独立流水线函数

我想编写两个独立的流水线函数,这意味着在 PL/SQL 包之外:

fn_test_1编译成功并且工作正常。但是我无法编译fn_test_2,因为:

我什至可以编写一个调用另一个的独立流水线函数吗?

0 投票
1 回答
175 浏览

oracle - oracle流水线表功能可以提高普通视图的性能吗

我有一个有点复杂的 oracle 视图,我用它来生成实时报告。由于派生表的所有行都被拉出,因此无论是索引还是分区,都几乎没有改进的余地。

我想知道我是否可以使用流水线表函数来提高报告的性能。

我想到了这一点,因为我不确定 SQL 究竟是如何工作的。查询是否等待直到从表中提取所有行,或者它像流水线表函数一样工作,一旦从基础表中提取一行,它就会被处理。

0 投票
1 回答
262 浏览

oracle - Oracle 流水线函数:ORA-06502 数值或值错误

我编写了一个流水线函数来从远程数据库中查询数据。我不断得到

ORA-06502: PL/SQL: 数字或值错误: 字符串缓冲区太小。

我想我确实理解何时会发生此错误,例如,当表列定义为VARCHAR2(10)并且您尝试插入大于 10 字节的内容时。但在这种情况下,我真的看不出有什么问题。

也许首先我会显示本地和远程数据库的参数。我认为这可能很重要,在两个数据库上都NLS_LENGTH_SEMANTICS设置为BYTE.

Local DB(存储流水线函数的地方): params local db

远程数据库(从哪里查询数据): params remote db

现在本地数据库中的代码:

这是远程数据库上的表规范:

所以你可以看到,当我在本地数据库中创建类型时,我选择了远程数据库中列的确切大小。但是当我执行/查询流水线函数时,我收到了这个错误(对不起,它是德语,但我在标题中写了英文): 错误消息

这怎么可能发生?你知道有什么问题吗?感谢任何帮助,谢谢!

编辑 2021-03-02:@ShaunPeterson 感谢您的回复,NLS_CHARACTERSET 在本地和远程数据库上都设置为 AL32UTF8。

我刚刚发现,这个问题似乎是由我们公司使用的 2 个不同的 IDE 引起的。我正在使用来自全方位自动化的 PL/SQL Developer。当我在远程数据库(表“PALETTE”)上发布表规范时,我使用该 IDE 连接到远程数据库,它显示了列类型/大小,如您在我的原始帖子中所见。我重复前 6 列:

但是当使用 Oracle SQL Developer 时,它看起来像这样:

所以看起来 PL/SQL Developer 只是显示了错误的规范。我不知道为什么会这样,我想知道,但这是另一个问题。我使用 Oracle SQL Developer 显示的列类型和大小解决了我的问题。

谢谢你。