Pergunta : Contando o comprimento do caráter de um campo longo - erro

Olá!, eu estou tentando contar o comprimento dos campos que são de um tipo de dados longo.  Eu escrevi um find_length2 ligação de controle e eu chamo-o de um outro procedimento.  Trabalha, mas eventualmente erros após 500.000 fileiras positivas e diz “ORA-06502: PL/SQL: erro numérico ou do valor”.  Por favor help.

I am que encerra uma cópia da função do find_lenth e do procedimento que eu me estou usando para o chamar função do comprimento de below.

Thanks much.

Find: o
CREATE ou SUBSTITUI LONGO long_var do number
IS
do
RETURN da função Find_Length2
(número do geo_log_id); o
BEGIN
SELECIONA o long_desc no long_var
do logs
ONDE log_id = geo_log_id; comprimento do retorno do
(long_var);
END;
/
Procdure para chamar a função: o
CREATE OU SUBSTITUI o log_id seleto do is
do log_id_cursor de GEO_COUNT_DB_LONG_SIZE
is
cursor do PROCEDIMENTO do logs
onde sti_casetype dentro (o
seleciona o sti_casetype
do ford_acs_casetypes
onde transition_phase = 'o Br/> do DB'< e o Br/> do B'< do <> do ford_contact_type_cd '); número do local_log_id do
; long_desc_length número do
/* (20.0); número do long_desc_length de */
; o
begin
abre o log_id_cursor; log_id_cursor do esforço do
no local_log_id;
quando o loop
de log_id_cursor%found
selecionar (local_log_id) o no long_desc_length dos registros ONDE LOG_ID = local_log_id; inserção do
(o case_no, field_size) nos valores geo_field_count2 (local_log_id, long_desc_length); o
comete; log_id_cursor do esforço do
no local_log_id; laço da extremidade do
; extremidade do
;
/

Error encontrado após ser bem sucedido em 500.000 fileiras positivas: o

SQL> trunca a tabela geo_field_count2;

Table truncated.

SQL> exec geo_count_db_long_size;o
BEGIN geo_count_db_long_size; EXTREMIDADE;

*
ERROR na linha 1:
ORA-06502: PL/SQL: error
ORA-06512 numérico ou do valor: “SCOPUS1_APP.FIND_LENGTH2 " no , linha 7
ORA-06512: de “no SCOPUS1_APP.GEO_COUNT_DB_LONG_SIZE ", linha 19
ORA-06512: na linha



de 1


SQL> class= do

Resposta : Contando o comprimento do caráter de um campo longo - erro

sim nós podemos definitivamente fazer aquele mas antes aquele deixou nos adicionar elimina erros/mensagens de registro ao código de função também ao unerstand que a linha está dando ao erro. Usar o código below uma execução o teste outra vez e dar-me que a mensagem de registro output o que você está começ na tela.

CRIAR OU SUBSTITUIR O PROCEDIMENTO GEO_COUNT_DB_LONG_SIZE
é
o log_id_cursor do cursor é
  selecionar to_char (log_id) dos registros
        onde sti_casetype dentro (
                                      selecionar o sti_casetype
                                            dos ford_acs_casetypes
                                            onde transition_phase = “DB”
                                            );
  número do local_log_id;
  long_desc_length número de/* (20.0); *
  número do long_desc_length;
  my_err varchar2 (100);
começar
  abrir o log_id_cursor;
  buscar o log_id_cursor no local_log_id;
   my_err: = ' após o fetch';
          quando log_id_cursor%found
           laço
      my_err: = ' antes da ligação de controle para começ o length';
  selecionar find_length3 (local_log_id) no long_desc_length dos registros ONDE LOG_ID = local_log_id;
      my_err: = ' após a ligação de controle para começ o length';
          inserção (o case_no, field_size) nos valores geo_field_count2 (local_log_id, long_desc_length);
      my_err: = ' após a inserção ao outro table';
       cometer;
      buscar o log_id_cursor no local_log_id;
   terminar o laço;
exceção quando outro então
dbms_output.put_line ('eu estou na exceção: '|| my_err);
dbms_output.put_line ('erro: '||sqlerrm);
dbms_output.put_line (de “código erro: ” || sqlcode);
extremidade;
/

criar ou substituir a função Find_Length3 (o número do geo_log_id)
  retornar o número
é
  clob x;
  y por muito tempo;
  my_err varchar2 (100);
começar
  dbms_lob.createtemporary (x, falsos);
my_err: = ' FUNÇÃO: após o createtemporary';
  selecionar o long_desc em y dos registros onde log_id = geo_log_id;
my_err: = ' FUNÇÃO: após o select';
   x: = to_clob (y);
my_err: = ' FUNÇÃO: após o to_clob';
  dbms_lob.getlength do retorno (x);
my_err: = ' FUNÇÃO: após o getlength';
 dbms_lob.freetemporary (x); --> a nota, esta não começ executada como
-- isto é após a indicação do retorno.

exceção
  quando outro então
dbms_output.put_line ('exceção da função do interior: '|| my_err);
dbms_output.put_line ('erro da função do interior: '||sqlerrm);
dbms_output.put_line (do “código de erro da função interior: ” || sqlcode);
extremidade;
/
Outras soluções  
 
programming4us programming4us