我有一个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) 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) 在下面的示例中,我将始终获得"1,2",或者是否可以获得"2,1"并且您能告诉我您在文档中的哪个位置可以保证它是否存在?
如果答案是肯定的,那就意味着没有ORDER BY也ORDER 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)
谢谢.
我正在尝试运行我编写的 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) 我正在尝试创建一个函数,它返回一个可以在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得到的数字
我正在尝试创建一个函数来从数据库中获取值列表。经过一些研究,我发现我需要使用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;) …
我想在F#中执行以下操作:
let index = 5
let sequence = [0..10]
let fifthElement =
sequence
|> .[index]
Run Code Online (Sandbox Code Playgroud)
但是,最后一行无效.我想要做的是实际检索索引为5的元素sequence.我做错了吗?
根据我的理解,流水线操作有助于反转函数调用,但我不确定如何使用流水线技术检索特定索引处的元素.
我的 Oracle 管道功能有问题,我非常想了解发生了什么。我的 Oracle 数据库是版本 19c,在 Red Hat 7.2 上运行并在AL32UTF8为字符集。
让我解释一下这个场景。
\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/\nRun Code Online (Sandbox Code Playgroud)\n流水线功能
\n这是管道函数,用于获取我可以加入的块中的输出文件,然后使用cat在 Linux 中使用。
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)