标签: pipelined-function

在Oracle 11g2 XE中编译PL/SQL函数有时会导致ORA-00600:内部错误

我有一个PL/SQL函数,我正在使用它有时编译好,但有时给我这个错误.

ORA-00600: internal error code, arguments: [17285], [0x318FDE2C], [1], [0x273F1C60], [], [], [], [], [], [], [], []
00600. 00000 -  "internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]"
*Cause:    This is the generic internal error number for Oracle program
       exceptions.  This indicates that a process has encountered an
       exceptional condition.
*Action:   Report as a bug - the first argument is the internal error number
Run Code Online (Sandbox Code Playgroud)

断开连接并重新连接到Oracle并且函数编译确定感觉很疯狂...

谷歌搜索错误代码和参数给了我这个

ERROR:
ORA-600 [17285] [a] [b] [c]

VERSIONS:
versions 7.0 …
Run Code Online (Sandbox Code Playgroud)

oracle pipelined-function ora-00600

7
推荐指数
1
解决办法
2660
查看次数

表函数和流水线函数之间的区别?

CREATE OR REPLACE TYPE ty_1 AS OBJECT ( fn VARCHAR2(100),
                                        sl NUMBER,
                                        hd DATE );
CREATE OR REPLACE TYPE ty_1_table AS TABLE OF ty_1;

CREATE OR REPLACE FUNCTION FN_RET_COL
  RETURN ty_1_table
AS
  c ty_1_table := TY_1_TABLE();
  BEGIN
    c.extend;
    C(1) := TY_1('A', 1, '10-JUN-2013');
    c.extend;
    C(2) := TY_1('B', 2, '11-JUN-2013');
    c.extend;
    C(3) := TY_1('C', 3, '12-JUN-2013');

    RETURN c;
  END;

CREATE OR REPLACE FUNCTION FN_RET_PIPE RETURN ty_1_table PIPELINED IS
  BEGIN
    PIPE ROW (TY_1('A', 1, '10-JUN-2013'));
    PIPE ROW (TY_1('B', 2, '11-JUN-2013'));
    PIPE ROW …
Run Code Online (Sandbox Code Playgroud)

oracle plsql pipelined-function

6
推荐指数
1
解决办法
3356
查看次数

SELECT*FROM TABLE(流水线函数):我可以确定结果中行的顺序吗?

在下面的示例中,我将始终获得"1,2",或者是否可以获得"2,1"并且您能告诉我您在文档中的哪个位置可以保证它是否存在?

如果答案是肯定的,那就意味着没有ORDER BYORDER SIBLINGS没有办法确定SELECT语句中的结果集顺序.

CREATE TYPE temp_row IS OBJECT(x number);
/

CREATE TYPE temp_table IS TABLE OF temp_row;
/

CREATE FUNCTION temp_func
RETURN temp_table PIPELINED
IS
BEGIN
    PIPE ROW(temp_row(1));
    PIPE ROW(temp_row(2));
END;
/

SELECT * FROM table(temp_func());
Run Code Online (Sandbox Code Playgroud)

谢谢.

oracle plsql pipelined-function

5
推荐指数
1
解决办法
2万
查看次数

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

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

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

DECLARE
    TYPE l_code_arr_typ IS VARRAY(3) OF VARCHAR2(100);
    l_code_arr l_code_arr_typ;
    l_objet    objet_interface_pkg.objet_interface_typ;
    l_resultat CLOB;
    l_valeur   valeur_pkg.valeur_typ;
    l_liens    lien_objet_interface_pkg.lien_objet_interface_tab;
    l_rows NUMBER;
BEGIN
    l_code_arr := l_code_arr_typ('champ.fonctions.dossier.particulier',
                                 'champ.fonctions.region.admin',
                                 'champ.fonctions.ministere.organisme');
    l_resultat := '{';

    FOR l_idx IN 1 .. l_code_arr.count LOOP
        l_objet    := objet_interface_pkg.obtenir_fnc(p_code      => l_code_arr(l_idx),
                                                      p_acron_sys => :acronyme);
        l_resultat := l_resultat || '"' || l_objet.code || '":[';

        l_liens := lien_objet_interface_pkg.obtenir_par_objet_fnc(p_id_objet => l_objet.id_obj);
        FOR l_lien IN (SELECT * FROM TABLE(l_liens)) …
Run Code Online (Sandbox Code Playgroud)

plsql aggregate-functions pipelined-function plsqldeveloper

5
推荐指数
1
解决办法
7360
查看次数

Oracle Pipelined功能

我正在尝试创建一个函数,它返回一个可以在FROM子句中使用的对象.根据对oracle文档的研究,我发现PIPELINED函数是我需要的.

我有这个代码:

CREATE TYPE type_struct AS OBJECT
(
    i NUMBER
);

CREATE TYPE tp_struct AS TABLE OF type_struct;

CREATE OR REPLACE FUNCTION gen_nums (na NUMBER, nb NUMBER)
RETURN tp_struct PIPELINED
IS
    rec type_struct;
    counter NUMBER;
BEGIN
    counter := na;

    WHILE (counter <= nb)
    LOOP
        SELECT counter
        INTO rec
        FROM dual;

        counter := counter + 1;

        PIPE ROW (rec);
    END LOOP;

    RETURN;
END gen_nums;
/
Run Code Online (Sandbox Code Playgroud)

预期结果是一个表格,其中包含从"na"到"nb"的记录.

但是在编译函数时出现此错误:

ORA 00932不一致的数据类型预计udt得到的数字

oracle plsql pipelined-function

3
推荐指数
1
解决办法
1612
查看次数

PLSQL流水线函数返回列表

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

这是我的代码:

CREATE OR REPLACE TYPE LISTE_VALUES AS TABLE OF VARCHAR2(2000);
/    

CREATE OR REPLACE FUNCTION F_GET_VAL(
        PI_1 IN VARCHAR2,
        PI_2 IN NUMBER,
        PI_3 IN VARCHAR2)
    RETURN LISTE_VALUES PIPELINED

    IS
        W_ROW_COUNT NUMBER := 0;

    BEGIN

        FOR CUR IN (SELECT VALUE FROM TABLE 
                    WHERE ...
                      ...

                    )

        LOOP
            PIPE ROW (CUR);
            W_ROUNT_COUNT := W_ROW_COUNT + 1;
        END LOOP;

        DBMS_OUTPUT.PUT_LINE('There were '
                            || W_ROW_COUNT
                            || ' rows selected' );

    END F_GET_VAL;
    /
Run Code Online (Sandbox Code Playgroud)

这些是我得到的错误:

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

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

(在一行:W_ROUNT_COUNT:= W_ROW_COUNT +1;) …

oracle plsql function pipelined-function

2
推荐指数
1
解决办法
128
查看次数

流水线操作以在索引处查找元素

我想在F#中执行以下操作:

let index = 5
let sequence = [0..10]
let fifthElement =
    sequence
    |> .[index]
Run Code Online (Sandbox Code Playgroud)

但是,最后一行无效.我想要做的是实际检索索引为5的元素sequence.我做错了吗?

根据我的理解,流水线操作有助于反转函数调用,但我不确定如何使用流水线技术检索特定索引处的元素.

f# functional-programming sequence pipelined-function

1
推荐指数
2
解决办法
3059
查看次数

Oracle 通过管道函数进行查询 - 数据包含 ASCII 扩展字符时出现奇怪错误

我的 Oracle 管道功能有问题,我非常想了解发生了什么。我的 Oracle 数据库是版本 19c,在 Red Hat 7.2 上运行并在AL32UTF8为字符集。

\n

让我解释一下这个场景。

\n

我有以下两种类型和一种管道函数的设置,以便使用并行进程生成文件,从而可以极大地加快大文件的生成速度。

\n

两种类型

\n
--\n-- DUMP_PARALLEL_OBJECT  (Type) \n--\nCREATE OR REPLACE TYPE CPL_DATA_OUT.dump_parallel_object AS OBJECT\n(file_name VARCHAR2 (128), no_records NUMBER, seq_id NUMBER);\n/\n\n--\n-- DUMP_PARALLEL_OBJECT_NTT  (Type) \n--\nCREATE OR REPLACE TYPE CPL_DATA_OUT.dump_parallel_object_ntt AS TABLE OF cpl_data_out.dump_parallel_object;\n/\n
Run Code Online (Sandbox Code Playgroud)\n

流水线功能

\n

这是管道函数,用于获取我可以加入的块中的输出文件,然后使用cat在 Linux 中使用。

\n
CREATE OR REPLACE function CPL_DATA_OUT.fn_generate_parallel_file\n(\np_source    IN SYS_REFCURSOR,\np_filename  IN VARCHAR2,\np_directory IN VARCHAR2,\np_extension IN VARCHAR2 DEFAULT 'csv',\np_limit     IN NUMBER DEFAULT 10000\n) return dump_parallel_object_ntt\npipelined\nparallel_enable (partition p_source by any)\nas\n …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql pipelined-function oracle19c

0
推荐指数
1
解决办法
439
查看次数