Получение ошибки ORA-06502: PL / SQL: цифра c или ошибка значения - PullRequest
0 голосов
/ 28 февраля 2020

Я получаю

ORA-06502 : PL / SQL: цифра c или ошибка значения в приведенном ниже коде:

record_state := record_state || 'Inserting record Entry for student: ' || 
                roll_no || ' for date: ' || To_Char(admission_date,'yyyymmdd') ||
                ' @ ' || TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') || CHR(10);

Ниже приведены типы данных:

roll_no        - NUMBER(10,0)
admission_date - TIMESTAMP(6)
record_state   - CLOB

Ответы [ 2 ]

1 голос
/ 28 февраля 2020

если у вас есть объекты lob, я бы предложил использовать библиотеку DBMS_LOB.

DECLARE
  record_state  CLOB;  
BEGIN
  DBMS_LOB.CREATETEMPORARY(record_state);  

  -- here you should make sure that the string is not too long (max 32K), otherwise the concatenation with pipes will not work. There will be an exception.
  DBMS_LOB.append (record_state , 'Inserting record Entry for student: ' || roll_no || ' for date: ' || To_Char(admission_date,'yyyymmdd') || ' @ ' || TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') || CHR(10)); 

  -- do more operations
  dbms_lob.freetemporary(record_state);

END ;
/
0 голосов
/ 28 февраля 2020

Вам нужно использовать to_clob для преобразования строки в сгусток, а затем вы можете объединить два сгустка следующим образом:

record_state := record_state || 
                to_clob(
                        'Inserting record Entry for student: ' || roll_no || ' for date: ' || To_Char(admission_date,'yyyymmdd') || ' @ ' || TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') || CHR(10)
                       );

Cheers !!

...