Pytanie : Liczyć the Charakter Długość Długi Pole - Błąd

Cześć, I próbować the długość pole który być długi dane typ.  I napisać funkcja dzwonić find_length2 i I dzwonić ono od inny procedura.  Ono pracować, ale ostatecznie błąd po 500,000 ostatecznie rząd i mówić "ORA-06502: PL/SQL: numeryk lub wartość błąd".  Zadawalać help.

I am kopia the find_lenth funkcja i the procedura I używać ono below.

Thanks much.

Find Długość Funkcja:
CREATE lub ZAMIENIAĆ funkcja Find_Length2
(geo_log_id liczba)
RETURN number
IS
long_var DŁUGI;
BEGIN
WYBRANY long_desc W long_var
OD logs
DOKĄD log_id = geo_log_id;
powrotny długość (long_var);
END;
/
Procdure the Funkcja:
CREATE LUB ZAMIENIAĆ PROCEDURA GEO_COUNT_DB_LONG_SIZE
is
cursor log_id_cursor is
wybrany log_id od logs
dokąd sti_casetype wewnątrz (
wybrany sti_casetype
od ford_acs_casetypes
dokąd transition_phase = 'DB'< br/> i ford_contact_type_cd <> 'B'< br/>);
local_log_id liczba;
/* long_desc_length liczba (20,0); */
long_desc_length liczba;
begin
otwierać log_id_cursor;
fetch log_id_cursor w local_log_id;
podczas gdy log_id_cursor%found
loop
wybrany find_length2 (local_log_id) w long_desc_length od bela DOKĄD LOG_ID = local_log_id;
wszywka w geo_field_count2 (case_no, field_size) wartość (local_log_id, long_desc_length);
popełniać;
fetch log_id_cursor w local_log_id;
końcówka pętla;
końcówka;
/

Error Spotykać po pomyślny na 500,000 pomyślny rząd:

SQL> ścinać wierzchołek stołowy geo_field_count2;

Table truncated.

SQL> exec geo_count_db_long_size;
BEGIN geo_count_db_long_size; KOŃCÓWKA;

*
ERROR przy linia (1):
ORA-06502: PL/SQL: numeryk lub wartość error
ORA-06512: przy "SCOPUS1_APP.FIND_LENGTH2 " , kreskowy 7
ORA-06512: przy "SCOPUS1_APP.GEO_COUNT_DB_LONG_SIZE " , kreskowy 19
ORA-06512: przy linia 1


SQL>



Odpowiedź : Liczyć the Charakter Długość Długi Pole - Błąd

tak my móc zdecydowanie móc ale przedtem ale pozwalać debug/bela wiadomość the funkcja kod także unerstand che linia dawać the błąd. Używać the ekran kod wykonywać the test znowu i dawać the bela wiadomość przesyłać test ty dostawać na the ekran.

TWORZYĆ LUB ZAMIENIAĆ PROCEDURA GEO_COUNT_DB_LONG_SIZE
być
kursor log_id_cursor być
  wybrany to_char (log_id) od bela
        dokąd sti_casetype wewnątrz (
                                      wybrany sti_casetype
                                            od ford_acs_casetypes
                                            dokąd transition_phase = "DB"
                                            );
  local_log_id liczba;
  /* long_desc_length liczba (20,0); *
  long_desc_length liczba;
  my_err varchar2 (100);
zaczynać
  otwierać log_id_cursor;
  przynosić log_id_cursor w local_log_id;
   my_err: = ' po fetch';
          podczas gdy log_id_cursor%found
           pętla
      my_err: = ' przed funkcja wezwanie length';
  wybrany find_length3 (local_log_id) w long_desc_length od bela DOKĄD LOG_ID = local_log_id;
      my_err: = ' po funkcja wezwanie length';
          wszywka w geo_field_count2 (case_no, field_size) wartość (local_log_id, long_desc_length);
      my_err: = ' po wszywka inny table';
       popełniać;
      przynosić log_id_cursor w local_log_id;
   kończyć pętla;
wyjątek gdy inny wtedy
dbms_output.put_line ('i być w wyjątek: '|| my_err);
dbms_output.put_line ('błąd: '||sqlerrm);
dbms_output.put_line ("błąd kod: " || sqlcode);
końcówka;
/

tworzyć lub zamieniać funkcja Find_Length3 (geo_log_id liczba)
  wracać liczba
być
  x clob;
  y tęsknić;
  my_err varchar2 (100);
zaczynać
  dbms_lob.createtemporary (x, fałszywy);
my_err: = ' FUNKCJA: po createtemporary';
  wybrany long_desc w y od bela dokąd log_id = geo_log_id;
my_err: = ' FUNKCJA: po select';
   x: = to_clob (y);
my_err: = ' FUNKCJA: po to_clob';
  powrotny dbms_lob.getlength (x);
my_err: = ' FUNKCJA: po getlength';
 dbms_lob.freetemporary (x); --> notatka, to dostawać wykonywać
-- oświadczenie być po powrotny oświadczenie.

wyjątek
  gdy inny wtedy
dbms_output.put_line ('inside funkcja wyjątek: '|| my_err);
dbms_output.put_line ('inside funkcja błąd: '||sqlerrm);
dbms_output.put_line ("inside funkcja błąd kod: " || sqlcode);
końcówka;
/
Inne rozwiązania  
 
programming4us programming4us