问题标签 [sys-refcursor]

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 投票
2 回答
146 浏览

plsql - 从光标对象的 for 循环返回 ref_cursor

我试图将 ref_cursor 分配给 for 循环内的变量,然后在函数结束时返回。如果获得超过 1 个结果,则循环遍历本地游标。

我已经注意到代码中出现错误的位置。我不知道如何创建一个循环,我可以在其中获取循环中当前点的 ref_cursor,将其分配给一个变量,然后将其返回给函数。有人可以帮我弄清楚该怎么做吗?以下是我基于谷歌搜索的阅读逻辑的第 i 次尝试。

错误是“PLS-00382:表达式类型错误”,我知道我显然没有根据这个错误分配正确的变量类型,但下面的错误代码说明了我想要做什么以及我想要做什么需要帮助完成。

0 投票
1 回答
1573 浏览

sql - Oracle SQL - 函数返回结果集

我有一个关于 Oracle SQL 4.0.0 版本的问题......它是关于应该返回小数据集的函数

所以程序有 3 个传入参数和数据集作为输出......这就是我到目前为止所拥有的

所以这个函数的解释是我想多次调用它,这就是为什么我把它放在第一位。所以我在表中的数据可以,但它不必有一个,这就是我有 IF 的原因。

然后我只有简单的 Select 语句,我需要 substr 函数作为数字。

我的主要问题是,在谷歌搜索了半天之后......我无法弄清楚如何返回我的 SYS_REFCURSOR Final。对此是否有任何建议,或者至少知道要更改哪些内容才能使其正常工作,以便我的函数可以返回我需要的结果集?

0 投票
1 回答
191 浏览

oracle - 带有数据透视子句的动态 sql 中的错误

我无法找出这个 plsql 块的问题:

这里有什么问题,我尝试了很多东西......也许'PIVOT'只是不适用于动态sql?

0 投票
1 回答
1545 浏览

oracle - pl/sql refcursor 是否意味着只返回少量记录?

我有一个执行良好的查询并且也进行了调整。我把它放在一个程序中。当我使用一组值从 SQL 执行查询以绑定其中使用的变量时,最多在 3-4 秒内产生结果。

来自 refcursor 的相同结果集需要 2 多分钟才能给出结果。我知道可能需要时间的是游标的 OPEN FETCH 和 CLOSE 。

我已经证实该过程中没有其他任何东西会消耗时间,因此排除了这种情况。

返回的记录数约为 9000+,这让我想到了一个问题 - 当记录集的大小超出某个限制时,引用游标是否不太适合?

RAM大小有问题吗?我使用 TOAD 来执行查询和比较过程。是的,我已经去了最后一条记录,所以它不像查询只返回前几条。

还可以做些什么来提高这个 REFCURSOR 速度?任何帮助深表感谢。

0 投票
0 回答
1082 浏览

stored-procedures - Oracle 调用一个过程在另一个过程中返回一个 CURSOR

我有 2 个包和一个返回 sysref 游标的过程。现在我想在另一个包和过程中调用这两个包和过程中的任何一个,它将在输入列上决定需要调用哪个包和过程。

但是相应地,内部 proc 的输出必须作为外部 proc 的输出。你能告诉我如何做到这一点..

0 投票
2 回答
964 浏览

plsql - PL/SQL 包和过程

我正在尝试使用包中的过程,以便可以调用外部程序。我不断遇到符号“CREATE”错误。我已经尝试了很多不同的方法,所以如果我的代码很乱,我很抱歉,我真的迷失了这个

0 投票
1 回答
725 浏览

c++ - OCIDefineByPos 通过 C++ 中的游标提取 NUMBER 值

通过 OCI 调用 Oracle 存储过程并在 C++ 中使用 out ref 游标返回结果之后,我想提取一个 NUMBER 列并将结果存储为双精度或长整数(截断)。

总之,我通过 OCI 调用 oracle 存储过程,使用 sys ref_cursor 来迭代结果。我已经可以使用 char[] 轻松提取 VARCHAR2 列,但是 NUMBER 列不起作用(我只需要整数部分)。

表定义为:

存储过程是:

我尝试使用 SQLT_NUM、SQLT_INT、SQLT_VNU 使用 long(也是 long long)和 double 变量,但是我仍然无法从中获得除 0 之外的整数值。代码片段:

任何指向正确方向的指针都将不胜感激(如果我错过了一些简单的事情,我们深表歉意!)。谢谢

0 投票
1 回答
6602 浏览

java - 在 Java 中调用 Oracle 存储过程

这是我如何通过 SqlDeveloper 执行我的存储过程

输出

现在我正在尝试以相同的方式执行存储过程,但在 Java 中。这是我的代码,我缺少有关输入/输出参数或其数据类型的信息。

我收到以下错误

我想我在这里遗漏了一些基本的东西。有人看到我在哪里失败了吗?谢谢。

0 投票
1 回答
2640 浏览

oracle - SQL Developer 脚本输出截断 sys_refcursor 宽度

我定义了一个函数,它返回一个包含 5 个文本列的 sys_refcursor。对不起,出于商业原因,我不能在这里发布它的内容。这些列被转换为具有特定宽度 (9,4,10,10,10) 的 varchar2。铸造使我能够确保列宽是恒定的。

在 SQL Developer 1.5 中,打印脚本输出(使用 SQL 工作表中的 F5)将光标的内容很好地显示为:

但是,在 SQL Developer 4.0 中,输出在函数调用的宽度处包装(类似于 SQLPlus 的 linesize 参数):

数据库版本为 11g。我尝试使用“set linesize 1000”命令,但输出仍然以相同的长度换行。但是,设置 linesize 5 会导致它在 5 个字符处换行。

输出在 SQL*Plus 中显示正常,无需使用任何“set”命令。

有没有办法防止光标内容在 4.0 中换行?

0 投票
1 回答
264 浏览

sql - 带绑定变量的动态 sql

/

我正在尝试使用包含动态构建的 SQL 查询的过程返回 empno 和员工姓名。查询是使用绑定变量构建的。但出现以下错误。可能是我调用过程 ORA-06512 的方式有问题:在第 1 行 00903. 00000 -“无效的表名”