Cuestión : Contando la longitud del carácter de un campo largo - error

Hola, estoy intentando contar la longitud de los campos que son de un tipo largo de datos.  Escribí un find_length2 llamado función y lo llamo de otro procedimiento.  Trabaja, pero eventual los errores después de 500.000 filas más y dice “ORA-06502: PL/SQL: error numérico o del valor”.  Por favor help.

I que incluye una copia de la función del find_lenth y del procedimiento que estoy utilizando para llamarlo función de la longitud de below.

Thanks much.

Find: el
CREATE o SUBSTITUYE LARGO long_var del number
IS
del
RETURN de la función Find_Length2
(número del geo_log_id); el
BEGIN
SELECCIONA el long_desc EN el long_var
del logs
DONDE log_id = geo_log_id; longitud de vuelta del
(long_var);
END;
/
Procdure para llamar la función: el
CREATE O SUBSTITUYE el log_id selecto del is
del log_id_cursor de GEO_COUNT_DB_LONG_SIZE
is
cursor del PROCEDIMIENTO del logs
donde sti_casetype adentro (el
selecciona el sti_casetype
del ford_acs_casetypes
donde transition_phase = el 'Br/> del DB'< y el Br/> del B'< del <> del ford_contact_type_cd '); número del local_log_id del
; long_desc_length número (20.0) del
/*; número del long_desc_length de */
; el
begin
abre log_id_cursor; log_id_cursor del alcance del
en local_log_id;
mientras que el loop
de log_id_cursor%found
selecciona el en long_desc_length de los registros DONDE LOG_ID = local_log_id; parte movible del
en (el case_no, field_size) los valores geo_field_count2 (local_log_id, long_desc_length); el
confía; log_id_cursor del alcance del
en local_log_id; lazo del extremo del
; extremo del
;
/

Error encontrado después de ser acertado en 500.000 filas más: el

SQL> trunca la tabla geo_field_count2;

Table truncated.

SQL> exec geo_count_db_long_size;el
BEGIN geo_count_db_long_size; EXTREMO;

*
ERROR en la línea 1:
ORA-06502: PL/SQL: error
ORA-06512: en “SCOPUS1_APP.FIND_LENGTH2 " el , línea 7
ORA-06512: en el de “SCOPUS1_APP.GEO_COUNT_DB_LONG_SIZE ", línea 19
ORA-06512: en la línea



de 1


SQL> class= del

Respuesta : Contando la longitud del carácter de un campo largo - error

podemos hacer sí definitivamente eso pero eso dejó antes nos agregar elimina errores/mensajes de registro al código de función también al unerstand que la línea está dando a error. Utilizar el código below una ejecución la prueba otra vez y darme que el mensaje de registro hizo salir lo que usted está consiguiendo en la pantalla.

CREAR O SUBSTITUIR EL PROCEDIMIENTO GEO_COUNT_DB_LONG_SIZE
es
el log_id_cursor del cursor es
  seleccionar to_char (log_id) de registros
        donde sti_casetype adentro (
                                      seleccionar el sti_casetype
                                            de ford_acs_casetypes
                                            donde transition_phase = “DB”
                                            );
  número del local_log_id;
  long_desc_length número (20.0) de/*; *
  número del long_desc_length;
  my_err varchar2 (100);
comenzar
  abrir el log_id_cursor;
  traer el log_id_cursor en local_log_id;
   my_err: = ' después de fetch';
          mientras que log_id_cursor%found
           lazo
      my_err: = ' antes de la llamada de función para conseguir el length';
  seleccionar find_length3 (local_log_id) en long_desc_length de los registros DONDE LOG_ID = local_log_id;
      my_err: = ' después de la llamada de función para conseguir el length';
          parte movible en (el case_no, field_size) los valores geo_field_count2 (local_log_id, long_desc_length);
      my_err: = ' después de parte movible al otro table';
       confiar;
      traer el log_id_cursor en local_log_id;
   terminar el lazo;
excepción cuando otras entonces
dbms_output.put_line ('estoy en la excepción: '|| my_err);
dbms_output.put_line ('error: '||sqlerrm);
dbms_output.put_line (“código de error: ” || sqlcode);
extremo;
/

crear o substituir la función Find_Length3 (el número del geo_log_id)
  volver el número
es
  clob x;
  y de largo;
  my_err varchar2 (100);
comenzar
  dbms_lob.createtemporary (x, falsos);
my_err: = ' FUNCIÓN: después de createtemporary';
  seleccionar el long_desc en y de los registros donde log_id = geo_log_id;
my_err: = ' FUNCIÓN: después de select';
   x: = to_clob (y);
my_err: = ' FUNCIÓN: después de to_clob';
  dbms_lob.getlength de vuelta (x);
my_err: = ' FUNCIÓN: después de getlength';
 dbms_lob.freetemporary (x); --> la nota, ésta no conseguirá ejecutada como
-- esto está después de la declaración de vuelta.

excepción
  cuando otros entonces
dbms_output.put_line ('excepción de la función del interior: '|| my_err);
dbms_output.put_line ('error de la función del interior: '||sqlerrm);
dbms_output.put_line (“código de error de la función del interior: ” || sqlcode);
extremo;
/
Otras soluciones  
 
programming4us programming4us