Vraag : Tellend de Lengte van het Karakter van een Lang Gebied - Fout

Hallo, probeer ik om de lengte van gebieden te tellen die van een lang gegevenstype zijn.  Ik schreef een functie genoemd find_length2 en ik roep het van een andere procedure.  Het werkt, maar uiteindelijk fouten na 500.000 plus rijen en zegt „ora-06502: PL/SQL: numerieke of waardefout“.  Gelieve help.

I am een exemplaar van de find_lenthfunctie en de procedure insluiten te gebruiken ik om het de Functie van de Lengte te roepen below.

Thanks much.

Find:
CREATE of VERVANGT functieFind_Length2
(geo_log_id aantal)/> long_var LANG
RETURN number
ISBEGIN
UITGEZOCHT long_desc IN long_var
VAN logs
WAAR log_id = geo_log_id;
(long_var) terugkeerlengte;
END;
/
Procdure om de Functie te roepen:
CREATE OF VERVANGT binnen log_id_cursor/>cursor is
van GEO_COUNT_DB_LONG_SIZE
is
waar sti_casetype (
uitgezochte sti_casetype
van ford_acs_casetypes
waar transition_phase = 'DB'< br/> en ford_contact_type_cd <> 'B'
); /> local_log_id aantal /* long_desc_length aantal
long_desc_length aantal */ open log_id_cursor
begin haallog_id_cursor in local_log_id;
terwijl log_id_cursor%found
loop
uitgezochte find_length2 (local_log_id) in long_desc_length van logboeken WAAR LOG_ID = local_log_id; /> tussenvoegsel
begaat;
haallog_id_cursor in local_log_id;
eindlijn; /> eind /

Error na succesvol het zijn wordt ontmoet op 500.000 plus rijen die:

SQL> beknot lijst geo_field_count2;

Table truncated.

SQL> exec geo_count_db_long_size;
BEGIN geo_count_db_long_size; EIND;

*
ERROR bij lijn 1:
ORA-06502: PL/SQL: numeriek of waarde error
ORA-06512: bij „SCOPUS1_APP.FIND_LENGTH2 " , lijn 7
ORA-06512: bij „SCOPUS1_APP.GEO_COUNT_DB_LONG_SIZE " , lijn 19
ORA-06512: bij lijn 1


SQL>



Antwoord : Tellend de Lengte van het Karakter van een Lang Gebied - Fout

ja kunnen wij dat absoluut doen maar alvorens dat zuivert/toevoegen registreer berichten eveneens aan de functiecode aan unerstand die de lijn de fout. geeft. Gebruik de onderstaande code uitvoeren opnieuw de test en geven me de output van het logboekbericht wat u op het scherm krijgt.

CRE�ëR OF VERVANG PROCEDURE GEO_COUNT_DB_LONG_SIZE
is
curseur log_id_cursor is
  selecteer to_char (log_id) van logboeken
        waar sti_casetype binnen (
                                      selecteer sti_casetype
                                            van ford_acs_casetypes
                                            waar transition_phase = „OB“
                                            );
  local_log_id aantal;
  /* long_desc_length aantal (20.0); */
  long_desc_length aantal;
  my_err varchar2 (100);
begin
  open log_id_cursor;
  haal log_id_cursor in local_log_id;
   my_err: = ' na fetch';
          terwijl log_id_cursor%found
           lijn
      my_err: = ' vóór te krijgen functievraag length';
  selecteer find_length3 (local_log_id) in long_desc_length van logboeken WAAR LOG_ID = local_log_id;
      my_err: = ' na te krijgen functievraag length';
          tussenvoegsel in geo_field_count2 (case_no, field_size) waarden (local_log_id, long_desc_length);
      my_err: = ' na tussenvoegsel aan andere table';
       bega;
      haal log_id_cursor in local_log_id;
   beëindig lijn;
uitzondering wanneer anderen toen
dbms_output.put_line ('ik ben in uitzondering: '|| my_err);
dbms_output.put_line ('fout: '||sqlerrm);
dbms_output.put_line („foutencode: “ || sqlcode);
eind;
/

cre�ër of vervang functie Find_Length3 (geo_log_id aantal)
  keer aantal terug
is
  x clob;
  lang y;
  my_err varchar2 (100);
begin
  dbms_lob.createtemporary (vals x,);
my_err: = ' FUNCTIE: na createtemporary';
  selecteer long_desc in y van logboeken waar log_id = geo_log_id;
my_err: = ' FUNCTIONEER: na select';
   x: = to_clob (y);
my_err: = ' FUNCTIE: na to_clob';
  terugkeer dbms_lob.getlength (x);
my_err: = ' FUNCTIE: na getlength';
 dbms_lob.freetemporary (x); --> zal de nota, dit niet uitgevoerd zoals worden
-- dit is na terugkeerverklaring.

uitzondering
  wanneer anderen toen
dbms_output.put_line ('de uitzondering van de binnenkantfunctie: '|| my_err);
dbms_output.put_line ('de fout van de binnenkantfunctie: '||sqlerrm);
dbms_output.put_line („de foutencode van de binnenkantfunctie: “ || sqlcode);
eind;
/
Andere oplossingen  
 
programming4us programming4us