【问题标题】:ORA-06502: PL/SQL: numeric or value errorORA-06502: PL/SQL: 数字或值错误
【发布时间】: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


【解决方案1】:

这是行不通的。您不能使用 dbms_output 来 put_line 包含 900k 行值的单个字符串。使用 UTL_FILE 包并将每一行写入文本文件。仍然是一个大文件,需要一段时间

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2021-12-26
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多