Question : Comptant la longueur de caractère d'un long champ - erreur

Bonjour, j'essaye de compter la longueur des champs qui sont d'un long type de données.  J'ai écrit un find_length2 appelé par fonction et je l'appelle d'un autre procédé.  Cela fonctionne, mais par la suite des erreurs après 500.000 rangées positives et indique « ORA-06502 : PL/SQL : erreur numérique ou de valeur ».  Svp help.

I AM joignant une copie de la fonction de find_lenth et du procédé que j'emploie pour l'appeler fonction de longueur de below.

Thanks much.

Find : le
CREATE ou REMPLACENT LONG long_var du number
IS
du
RETURN de la fonction Find_Length2
(nombre de geo_log_id) ; le
BEGIN
CHOISISSENT le long_desc DANS le long_var
À PARTIR du logs
OÙ log_id = geo_log_id ; longueur de retour du
(long_var) ;
END ;
/
Procdure pour appeler la fonction : le
CREATE OU REMPLACENT le log_id choisi de l'is
de log_id_cursor de GEO_COUNT_DB_LONG_SIZE
is
cursor de PROCÉDÉ du logs
où sti_casetype dedans (le
choisissent le sti_casetype
à partir du ford_acs_casetypes
où transition_phase = le 'Br/> de DB'< et le Br/> de B'< de <> de ford_contact_type_cd ') ; nombre de local_log_id du
; long_desc_length nombre (20.0) du
/* ; nombre de long_desc_length de */
; le
begin
ouvrent le log_id_cursor ; log_id_cursor d'effort du
dans le local_log_id ;
tandis que le loop
de log_id_cursor%found
choisissent le dans le long_desc_length à partir des notations OÙ LOG_ID = local_log_id ; insertion du
dans (le case_no, field_size) les valeurs geo_field_count2 (local_log_id, long_desc_length) ; le
commettent ; log_id_cursor d'effort du
dans le local_log_id ; boucle d'extrémité du
; extrémité du
;
/

Error produit après avoir été réussi sur 500.000 rangées positives : le

SQL> tronquent la table geo_field_count2 ;

Table truncated.

SQL> exec geo_count_db_long_size;le
BEGIN geo_count_db_long_size ; EXTRÉMITÉ ;

*
ERROR à la ligne 1 :
ORA-06502 : PL/SQL : error
ORA-06512 numérique ou de valeur : « SCOPUS1_APP.FIND_LENGTH2 " au , ligne 7
ORA-06512 : au de « SCOPUS1_APP.GEO_COUNT_DB_LONG_SIZE ", ligne 19
ORA-06512 : à la ligne



de 1


SQL> class= de

Réponse : Comptant la longueur de caractère d'un long champ - erreur

oui nous pouvons certainement faire cela mais avant cela a laissé nous s'ajouter corrigent/messages de notation au code de fonction aussi bien à l'unerstand que la ligne donne à l'erreur. Employer le code ci-dessous une exécution l'essai encore et me donner que le message de notation a produit ce qu'obtenez vous sur l'écran.

CRÉER OU REMPLACER LE PROCÉDÉ GEO_COUNT_DB_LONG_SIZE
est
le log_id_cursor de curseur est
  choisir to_char (log_id) à partir des notations
        là où sti_casetype dedans (
                                      choisir le sti_casetype
                                            des ford_acs_casetypes
                                            là où transition_phase = « DB »
                                            ) ;
  nombre de local_log_id ;
  long_desc_length nombre (20.0) de/* ; *
  nombre de long_desc_length ;
  my_err varchar2 (100) ;
commencer
  ouvrir le log_id_cursor ;
  chercher le log_id_cursor dans le local_log_id ;
   my_err : = ' après fetch';
          tandis que log_id_cursor%found
           boucle
      my_err : = ' avant l'appel de fonction pour obtenir le length';
  choisir find_length3 (local_log_id) dans le long_desc_length à partir des notations OÙ LOG_ID = local_log_id ;
      my_err : = ' après l'appel de fonction pour obtenir le length';
          insertion dans (le case_no, field_size) les valeurs geo_field_count2 (local_log_id, long_desc_length) ;
      my_err : = ' après insertion à l'autre table';
       commettre ;
      chercher le log_id_cursor dans le local_log_id ;
   finir la boucle ;
exception quand d'autres alors
dbms_output.put_line ('je suis dans l'exception : '|| my_err) ;
dbms_output.put_line ('erreur : '||sqlerrm) ;
dbms_output.put_line (« code d'erreur :  » || sqlcode) ;
extrémité ;
/

créer ou remplacer la fonction Find_Length3 (le nombre de geo_log_id)
  renvoyer le nombre
est
  clob X ;
  y longtemps ;
  my_err varchar2 (100) ;
commencer
  dbms_lob.createtemporary (x, faux) ;
my_err : = ' FONCTION : après createtemporary';
  choisir le long_desc dans y à partir des notations où log_id = geo_log_id ;
my_err : = ' FONCTION : après select';
   X : = to_clob (y) ;
my_err : = ' FONCTION : après to_clob';
  dbms_lob.getlength de retour (x) ;
my_err : = ' FONCTION : après getlength';
 dbms_lob.freetemporary (x) ; --> la note, ceci n'obtiendra pas exécutée As
-- c'est après le rapport de retour.

exception
  quand d'autres alors
dbms_output.put_line ('exception de fonction d'intérieur : '|| my_err) ;
dbms_output.put_line ('erreur de fonction d'intérieur : '||sqlerrm) ;
dbms_output.put_line (« code d'erreur de fonction d'intérieur :  » || sqlcode) ;
extrémité ;
/
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us