【发布时间】:2014-04-25 15:18:17
【问题描述】:
错误:- 尝试执行以下过程时出现以下错误 ORA-06502: PL/SQL: 数字或值错误 ORA-06512:在“proc1”,第 31 行 ORA-06512: 在第 10 行
代码:-
create or replace
PROCEDURE proc1 (
p_param1 IN INTEGER
)
IS
CURSOR c_cursor1 IS
SELECT EMPLOYEE_ID FROM Employees ;
r_EMPLOYEE_ID_tobe_updated c_cursor1%ROWTYPE;
v_params VARCHAR2 (32767) := '';
BEGIN
OPEN c_cursor1;
LOOP
FETCH c_cursor1 INTO r_EMPLOYEE_ID_tobe_updated;
EXIT WHEN c_cursor1%NOTFOUND;
IF v_params = '' THEN
v_params := v_params || r_EMPLOYEE_ID_tobe_updated.EMPLOYEE_ID;
ELSE
v_params := v_params || ', ' || r_EMPLOYEE_ID_tobe_updated.EMPLOYEE_ID;
END IF;
END LOOP;
CLOSE c_cursor1;
DBMS_OUTPUT.PUT_LINE('outcome:: ' || v_params );
END proc1;
错误:- ORA-06502: PL/SQL: 数字或值错误 ORA-06512:在“proc1”,第 31 行 ORA-06512: 在第 10 行
Employee_id 字段详细信息:- Employee_Id NUMBER(9) NOT NULL
你能帮帮我吗?
【问题讨论】:
-
第 10 行和第 31 行分别是哪几行?并且请将 EMPLOYEES 的 DDL 添加到您的问题中(不是作为评论,而是通过编辑问题本身)。
-
Employes 中有多少行? v_params 的实际长度是多少?
-
该表包含 909300 名员工
-
在这种情况下,将近 100 万个标识符不适合 32.767 字符长度的变量。
-
哦是的..!!! varchar2 声明将太小而无法容纳庞大的数据..!!!您能否建议使用哪种数据类型?
标签: oracle