问题标签 [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.
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是否损坏。
我希望有一个人可以帮助我...
oracle - ORACLE 表达式在流水线函数上的类型错误(多连接表)
我正在编写一个带有流水线函数的 Oracle 包来获取多条记录,查询是关于多个连接表的,它将保存到另一个表中,我为类型记录创建了一个TYPE RECORD和TABLE TYPE,然后我创建了流水线函数与他们的查询,但是当我编译包时,我得到一个错误"表达式是错误的类型"。
下面是定义包:
下面是正文包:
你能说我,我做错了什么吗?
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 语句中声明了变量。
如果有人可以帮助我,那就太好了!谢谢
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,但我也对较新版本的解决方案感兴趣。
oracle - 如何使用光标创建流水线函数并返回表?
我有一个类似的表(这里有 9 列带有 ';'。这是示例表):
我需要像这样的目标表:
我找到了以下链接: 带有光标参数 oracle 的流水线函数,但我无法定期创建函数。我只为一列创建函数但不能循环,也不能调用表。这是我的功能:
你能给我一些建议吗?谢谢
c# - 流水线函数作为 EF/MVC 中的实体
我有一个使用实体框架的.Net MVC 应用程序,通常我会在数据实体中使用表或视图......例如。
...其中 company_details 是一个 oracle 表。
但是我需要尝试使用流水线函数....例如 sql 将是:
这已在 Oracle 表单中使用的报告中使用,但现在将包含在 .Net MVC 应用程序中。
如何在我的实体中包含流水线功能?
提前致谢
plsql - Oracle 19C 数据库问题
我有一个在 11g 版本中运行良好的包。
但是当我在 19c 版本中部署相同的包时,行为是不同的。
PFB 说明。
包规范有一个游标,并使用 cursor%rowtype 创建了一个表类型。具有返回表类型的流水线函数。
使用带有表子句的函数
这样返回值就可以作为一个表,我可以用列名读取结果。
在 11g 中,该函数返回与游标列名称相同的列标题。但在 19c 中,该函数返回列标题,如“Attr_1、Attr_2 等”。
我需要该函数将列标题作为光标列名称返回。
注意:代码非常敏感,不能共享。
样品:PFB 样品。
在 11g 中,上面的选择将列标题作为“id,描述”,但在 19c 中,我得到的是“ATTR_1,ATTR_2”。
请帮忙。
oracle - 独立流水线函数调用另一个独立流水线函数
我想编写两个独立的流水线函数,这意味着在 PL/SQL 包之外:
fn_test_1
编译成功并且工作正常。但是我无法编译fn_test_2
,因为:
我什至可以编写一个调用另一个的独立流水线函数吗?
oracle - oracle流水线表功能可以提高普通视图的性能吗
我有一个有点复杂的 oracle 视图,我用它来生成实时报告。由于派生表的所有行都被拉出,因此无论是索引还是分区,都几乎没有改进的余地。
我想知道我是否可以使用流水线表函数来提高报告的性能。
我想到了这一点,因为我不确定 SQL 究竟是如何工作的。查询是否等待直到从表中提取所有行,或者它像流水线表函数一样工作,一旦从基础表中提取一行,它就会被处理。
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 显示的列类型和大小解决了我的问题。
谢谢你。