Null значение ключа индексной таблицы ошибка числа или значения

Я пытаюсь отправить данные из временной таблицы в целевые таблицы. Код уже написан сторонними разработчиками, но никогда не тестировался перед их уходом. Мне удалось исправить другие ошибки, и теперь самая первая строка выдает следующие ошибки: ORA-06502: PL/SQL: ошибка числа или значения: значение...

Я пытаюсь отправить данные из временной таблицы в целевые таблицы. Код уже написан сторонними разработчиками, но никогда не тестировался перед их уходом.

Мне удалось исправить другие ошибки, и теперь самая первая строка выдает следующие ошибки:

ORA-06502: PL/SQL: ошибка числа или значения: значение ключа индексной таблицы NULL.

 DECLARE
  -- in-memory cache table type
  TYPE CODE_ID_MAP IS TABLE OF NUMBER(20) INDEX BY VARCHAR2(1200);

  -- in-memory chache tables
  magasins_map CODE_ID_MAP;
  type_canal_map CODE_ID_MAP;
  partenaires_map CODE_ID_MAP;
  types_adresses_map CODE_ID_MAP;
  types_magasins_map CODE_ID_MAP;
  statut_donnees_partenaire_map CODE_ID_MAP;

  -- cursor on input data
  CURSOR imp_cur IS
    SELECT
      extern.*,
      c.id     AS idcarteu, -- correspond a "extern.numero_carte"

      m0.id    AS old_membres_id0,
      m0.idrxp AS idrxp0,
      c0.id    AS idcarteu0,

      m1.id    AS old_membres_id1,
      m1.idrxp AS idrxp1,
      c1.id    AS idcarteu1,

      m2.id    AS old_membres_id2,
      m2.idrxp AS idrxp2,
      c2.id    AS idcarteu2

    FROM batch_rxp2bmc extern

    LEFT JOIN donnees_carteu c  ON extern.numero_carte = c.numero_carte

    LEFT JOIN membres m0        ON extern.membre_idrxp0 = m0.idrxp
    LEFT JOIN donnees_carteu c0 ON m0.donnees_carteu_id = c0.id

    LEFT JOIN membres m1        ON extern.membre_idrxp1 = m1.idrxp
    LEFT JOIN donnees_carteu c1 ON m1.donnees_carteu_id = c1.id

    LEFT JOIN membres m2        ON extern.membre_idrxp2 = m2.idrxp
    LEFT JOIN donnees_carteu c2 ON m2.donnees_carteu_id = c2.id;

  TYPE IMP_TBL_TYPE IS TABLE OF imp_cur%ROWTYPE;
  imp_row imp_cur%ROWTYPE;
  imp_tbl IMP_TBL_TYPE;
  imp_cur_max PLS_INTEGER := 5000;

  PROCEDURE log (level VARCHAR2, lino NUMBER, msg VARCHAR2) IS BEGIN
    dbms_output.put_line('[' || level || '][#' || lino || '] ' || msg);
  END log;


  PROCEDURE update_membre (
    lino NUMBER,                    -- numero de ligne
    m imp_cur%ROWTYPE,              -- donnees deversees
    old_membres_id membres.id%TYPE, -- sujet de la mise-a-jour
    old_carteu_id donnees_carteu.id%TYPE -- carte-u du sujet de la mise-a-jour
  )
  IS
    new_carteu_id donnees_carteu.id%TYPE;
  BEGIN
    log('INFO', lino, 'mise-a-jour du membre ' || m.membre_identifiant);

    -- rendre l'id variable -- imp_row "m" est en lecture seule
    new_carteu_id := m.idcarteu;

    -- insertion de la carte si elle n'existe pas
    IF new_carteu_id IS NULL THEN
      new_carteu_id := seq_donnees_carteu_id.nextval;
      INSERT INTO donnees_carteu (id, numero_carte) VALUES (new_carteu_id, m.numero_carte);
    END IF;

    -- alerte si le client change de carte-u car l'ancienne
    -- n'est pas supprime en cascade et devient orphelin.
    IF new_carteu_id != old_carteu_id THEN
      log('WARN', lino,
        m.membre_identifiant || ' change de carte-u : ' ||
        'la ' || new_carteu_id || ' remplace la ' || old_carteu_id || ' devenant orphelin'
      );
    END IF;

    -- mise-a-jour du membre
    UPDATE membres SET
      idrxp = m.membre_idrxp0, -- on ecrase tjrs l'id historique
      email = m.membre_email,
      identifiant = m.membre_identifiant,
      civilite = m.membre_civilite,
      nom = m.membre_nom,
      prenom = m.membre_prenom,
      naissancedate = m.membre_naissance,
      profession = m.membre_profession,
      telfixe = m.membre_tel_fixe,
      telmobile = m.membre_tel_mobile,
      situationfamiliale = m.membre_situ_fam,
      carteutypeporteur = m.membre_type_porteur,
      carteu_porteur_principal = m.membre_porteur_principal,
      donnees_carteu_id = new_carteu_id
    WHERE id = old_membres_id;

    -- mise-a-jour/insertion de l'adresse de domicile
    MERGE INTO donnees_adresses trg
      USING (
        SELECT
          old_membres_id AS membres_id,
          types_adresses_map(m.adresse_type) AS types_adresses_id
        FROM dual
      ) src
      ON (trg.membres_id = src.membres_id AND trg.types_adresses_id = src.types_adresses_id)
    WHEN MATCHED THEN
      UPDATE SET
        adresse = m.adresse_street,
        complement_adresse = m.adresse_complement,
        code_postal = m.adresse_code_postal,
        ville = m.adresse_ville,
        pays = m.adresse_pays
    WHEN NOT MATCHED THEN
      INSERT (
        membres_id,
        types_adresses_id,
        adresse,
        complement_adresse,
        code_postal,
        ville,
        pays
      )
      VALUES (
        old_membres_id,
        types_adresses_map(m.adresse_type),
        m.adresse_street,
        m.adresse_complement,
        m.adresse_code_postal,
        m.adresse_ville,
        m.adresse_pays
      );

    -- mise-a-jour/insertion des souscriptions sms, email, courrier
    MERGE INTO donnees_communication trg
      USING (
        SELECT
          old_membres_id AS membres_id,
          type_canal_map(m.optin_sms_canal) AS canal_communication_id
        FROM dual
      ) src
      ON (trg.membres_id = src.membres_id AND trg.canal_communication_id = src.canal_communication_id)
    WHEN MATCHED THEN
      UPDATE SET
        accepte_canal = m.optin_sms,
        date_derniere_maj = m.optin_sms_date,
        source_maj = m.optin_sms_source
      WHERE accepte_canal != m.optin_sms -- mise-a-jour si ca change qqc
    WHEN NOT MATCHED THEN
      INSERT (
        membres_id,
        accepte_canal,
        date_derniere_maj,
        source_maj,
        canal_communication_id
      )
      VALUES (
        old_membres_id,
        m.optin_sms,
        m.optin_sms_date,
        m.optin_sms_source,
        type_canal_map(m.optin_sms_canal)
      );

    MERGE INTO donnees_communication trg
      USING (
        SELECT
          old_membres_id AS membres_id,
          type_canal_map(m.optin_email_canal) AS canal_communication_id
        FROM dual
      ) src
      ON (trg.membres_id = src.membres_id AND trg.canal_communication_id = src.canal_communication_id)
    WHEN MATCHED THEN
      UPDATE SET
        accepte_canal = m.optin_email,
        date_derniere_maj = m.optin_email_date,
        source_maj = m.optin_email_source
      WHERE accepte_canal != m.optin_email -- mise-a-jour si ca change qqc
    WHEN NOT MATCHED THEN
      INSERT (
        membres_id,
        accepte_canal,
        date_derniere_maj,
        source_maj,
        canal_communication_id
      )
      VALUES (
        old_membres_id,
        m.optin_email,
        m.optin_email_date,
        m.optin_email_source,
        type_canal_map(m.optin_email_canal)
      );

    MERGE INTO donnees_communication trg
      USING (
        SELECT
          old_membres_id AS membres_id,
          type_canal_map(m.optin_courrier_canal) AS canal_communication_id
        FROM dual
      ) src
      ON (trg.membres_id = src.membres_id AND trg.canal_communication_id = src.canal_communication_id)
    WHEN MATCHED THEN
      UPDATE SET
        accepte_canal = m.optin_courrier,
        date_derniere_maj = m.optin_courrier_date,
        source_maj = m.optin_courrier_source
      WHERE accepte_canal != m.optin_courrier -- mise-a-jour si ca change qqc
    WHEN NOT MATCHED THEN
      INSERT (
        membres_id,
        accepte_canal,
        date_derniere_maj,
        source_maj,
        canal_communication_id
      )
      VALUES (
        old_membres_id,
        m.optin_courrier,
        m.optin_courrier_date,
        m.optin_courrier_source,
        type_canal_map(m.optin_courrier_canal)
      );

    -- remplacement des enfants (nous sommes pas en mesure de faire le lien entre
    -- des enfant deja en base et ceux qui sont deverses)
    DELETE membre_enfants WHERE membre_id = old_membres_id;
    INSERT ALL
      INTO membre_enfants (membre_id, prenom, sexe, naissancedate)
      VALUES (old_membres_id, m.enfant_1_prenom, m.enfant_1_sexe, m.enfant_1_naissance)

      INTO membre_enfants (membre_id, prenom, sexe, naissancedate)
      VALUES (old_membres_id, m.enfant_2_prenom, m.enfant_2_sexe, m.enfant_2_naissance)

      INTO membre_enfants (membre_id, prenom, sexe, naissancedate)
      VALUES (old_membres_id, m.enfant_3_prenom, m.enfant_3_sexe, m.enfant_3_naissance)

      INTO membre_enfants (membre_id, prenom, sexe, naissancedate)
      VALUES (old_membres_id, m.enfant_4_prenom, m.enfant_4_sexe, m.enfant_4_naissance)

      INTO membre_enfants (membre_id, prenom, sexe, naissancedate)
      VALUES (old_membres_id, m.enfant_5_prenom, m.enfant_5_sexe, m.enfant_5_naissance)

      INTO membre_enfants (membre_id, prenom, sexe, naissancedate)
      VALUES (old_membres_id, m.enfant_6_prenom, m.enfant_6_sexe, m.enfant_6_naissance)
    SELECT * FROM dual;

    -- mise-a-jour/insertion des magasins favorites
    MERGE INTO membres_types_magasins trg
      USING (
      SELECT
        old_membres_id AS membres_id,
        magasins_map(m.fav_magasinsu) AS magasins_id,
        types_magasins_map(m.fav_magasinsu_type) AS types_magasins_id
        FROM dual
      ) src
      ON (trg.membres_id = src.membres_id AND trg.types_magasins_id = src.types_magasins_id)
    WHEN MATCHED THEN
      UPDATE SET
        magasins_id = src.magasins_id
      WHERE magasins_id != src.magasins_id
    WHEN NOT MATCHED THEN
      INSERT (membres_id, magasins_id, types_magasins_id)
      VALUES (src.membres_id, src.magasins_id, src.types_magasins_id);

    MERGE INTO membres_types_magasins trg
      USING (
        SELECT
        old_membres_id AS membres_id,
        magasins_map(m.fav_mobileapp) AS magasins_id,
        types_magasins_map(m.fav_mobileapp_type) AS types_magasins_id
        FROM dual
      ) src
      ON (trg.membres_id = src.membres_id AND trg.types_magasins_id = src.types_magasins_id)
    WHEN MATCHED THEN
      UPDATE SET
        magasins_id = src.magasins_id
      WHERE magasins_id != src.magasins_id
    WHEN NOT MATCHED THEN
      INSERT (membres_id, magasins_id, types_magasins_id)
      VALUES (src.membres_id, src.magasins_id, src.types_magasins_id);

    -- suppression du consentement s'il n'est pas renseigne
    IF m.consentement_date IS NULL THEN
      DELETE membre_consentement WHERE id_membre = old_membres_id;

    -- creation du consentement s'il n'existe pas encore
    ELSE
      MERGE INTO membre_consentement trg
        USING (
        SELECT
          old_membres_id AS id_membre,
          m.consentement_date AS date_consentement,
          partenaires_map(m.consentement_partenaire) AS id_source_consentement
        FROM dual
        ) src
        ON (trg.id_membre = src.id_membre)
      WHEN NOT MATCHED THEN
        INSERT (id_membre, date_consentement, id_source_consentement)
        VALUES (src.id_membre, src.date_consentement, src.id_source_consentement);
    END IF;

    -- point de vigilence : munissez-vous d'un schema de la BMC
    --   la relation entre MEMBRES et DONNEES_PARTENAIRE et de cardinalite
    --   one-to-many et non many-to-many comme le sugere le tableau intermediare
    --   MEMBRES_DONNEES_PARTENAIRE. une adhesion membre-service (representee
    --   par DONNEES_PARTENAIRE) ne peut pas etre partage entre plusieurs membres.
    --   c'est une erreur dans la conception de la bdd.

    DECLARE
      donnees_partenaire_id donnees_partenaire.id%TYPE;
    BEGIN
      SELECT dp.id INTO donnees_partenaire_id FROM donnees_partenaire dp
      INNER JOIN membres_donnees_partenaire mdp
      ON mdp.donnees_partenaire_id = dp.id
      WHERE mdp.membres_id = old_membres_id
      AND dp.partenaires_id = partenaires_map(m.adhesion_magasinsu_partenaire);

      UPDATE donnees_partenaire dp
      SET statut_donnees_partenaire_id = statut_donnees_partenaire_map(m.adhesion_magasinsu_statut)
      WHERE id = donnees_partenaire_id;

    EXCEPTION 
      WHEN NO_DATA_FOUND THEN
        log('ERROR', lino, m.membre_identifiant || ' n''est pas associe a magasins-u');
    END;

    DECLARE
      donnees_partenaire_id donnees_partenaire.id%TYPE;
    BEGIN
      SELECT dp.id INTO donnees_partenaire_id FROM donnees_partenaire dp
      INNER JOIN membres_donnees_partenaire mdp
      ON mdp.donnees_partenaire_id = dp.id
      WHERE mdp.membres_id = old_membres_id
      AND dp.partenaires_id = partenaires_map(m.adhesion_mobileapp_partenaire);

      UPDATE donnees_partenaire dp
      SET statut_donnees_partenaire_id = statut_donnees_partenaire_map(m.adhesion_mobileapp_statut)
      WHERE id = donnees_partenaire_id;

    EXCEPTION 
      WHEN NO_DATA_FOUND THEN
        donnees_partenaire_id := seq_donnees_part_id.nextval;

        INSERT INTO donnees_partenaire (
          id,
          statut_donnees_partenaire_id,
          partenaires_id
        ) VALUES (
          donnees_partenaire_id,
          statut_donnees_partenaire_map(m.adhesion_magasinsu_statut),
          partenaires_map(m.adhesion_magasinsu_partenaire)
        );

        INSERT INTO membres_donnees_partenaire (
          membres_id,
          donnees_partenaire_id
        ) VALUES (
          old_membres_id,
          donnees_partenaire_id
        );
    END;

  END update_membre;


   PROCEDURE create_membre (
    lino NUMBER,                    -- numero de ligne versee
    m imp_cur%ROWTYPE              -- donnees derversees
   ) AS
   idcarteu donnees_carteu.id%TYPE; -- id de la carte associe au numero deverse
    membres_id membres.id%TYPE;     -- cle primaire du nouveau membre
    donnees_partenaire_id donnees_partenaire.id%TYPE; -- cle primaire des adhesions appli du client
  BEGIN
    log('WARN', lino, m.membre_identifiant || ' est nouvellement cree. l''utilisateur n''a pas de mdp.');

    -- insertion de la carte-u si elle n'existe pas encore
    IF idcarteu IS NULL THEN
      idcarteu := seq_donnees_carteu_id.nextval;
      INSERT INTO donnees_carteu (id, numero_carte)
      VALUES (idcarteu, m.numero_carte);
    END IF;

    -- cle primaire du nouveau membre est cle etrangere pour les infos associees
    membres_id := seq_membres_id.nextval;

    -- insertion du client lui-meme
    INSERT INTO membres (
      id,
      idrxp,
      email,
      identifiant,
      civilite,
      nom,
      prenom,
      naissancedate,
      profession,
      telfixe,
      telmobile,
      situationfamiliale,
      carteutypeporteur,
      carteu_porteur_principal,
      donnees_carteu_id
    ) VALUES (
      membres_id,
      m.membre_idrxp0,
      m.membre_email,
      m.membre_identifiant,
      m.membre_civilite,
      m.membre_nom,
      m.membre_prenom,
      m.membre_naissance,
      m.membre_profession,
      m.membre_tel_fixe,
      m.membre_tel_mobile,
      m.membre_situ_fam,
      m.membre_type_porteur,
      m.membre_porteur_principal,
      idcarteu
    );


      -- insertion de l'adresse domicile
      INSERT INTO donnees_adresses (
        membres_id,
        types_adresses_id,
        adresse,
        complement_adresse,
        code_postal,
        ville,
        pays
      ) VALUES (
        membres_id,
        types_adresses_map(m.adresse_type),
        m.adresse_street,
        m.adresse_complement,
        m.adresse_code_postal,
        m.adresse_ville,
        m.adresse_pays
      );

      -- insertion des souscriptions aux animations commerciales du client
      INSERT INTO donnees_communication (
        membres_id,
        accepte_canal,
        date_derniere_maj,
        source_maj,
        canal_communication_id
      ) VALUES (
        membres_id,
        m.optin_sms,
        m.optin_sms_date,
        m.optin_sms_source,
        type_canal_map(m.optin_sms_canal)
      );

      INSERT INTO donnees_communication (
        membres_id,
        accepte_canal,
        date_derniere_maj,
        source_maj,
        canal_communication_id
      ) VALUES (
        membres_id,
        m.optin_email,
        m.optin_email_date,
        m.optin_email_source,
        type_canal_map(m.optin_email_canal)
      );

      INSERT INTO donnees_communication (
        membres_id,
        accepte_canal,
        date_derniere_maj,
        source_maj,
        canal_communication_id
      ) VALUES (
        membres_id,
        m.optin_courrier,
        m.optin_courrier_date,
        m.optin_courrier_source,
        type_canal_map(m.optin_courrier_canal)
      );


    -- insertion des enfants
    IF m.enfant_1_prenom    IS NOT NULL OR
       m.enfant_1_sexe      IS NOT NULL OR
       m.enfant_1_naissance IS NOT NULL
    THEN
      INSERT INTO membre_enfants (membre_id, prenom, sexe, naissancedate)
      VALUES (membres_id, m.enfant_1_prenom, m.enfant_1_sexe, m.enfant_1_naissance);
    END IF;

    IF m.enfant_2_prenom    IS NOT NULL OR
       m.enfant_2_sexe      IS NOT NULL OR
       m.enfant_2_naissance IS NOT NULL
    THEN
      INSERT INTO membre_enfants (membre_id, prenom, sexe, naissancedate)
      VALUES (membres_id, m.enfant_2_prenom, m.enfant_2_sexe, m.enfant_2_naissance);
    END IF;

    IF m.enfant_3_prenom    IS NOT NULL OR
       m.enfant_3_sexe      IS NOT NULL OR
       m.enfant_3_naissance IS NOT NULL
    THEN
      INSERT INTO membre_enfants (membre_id, prenom, sexe, naissancedate)
      VALUES (membres_id, m.enfant_3_prenom, m.enfant_3_sexe, m.enfant_3_naissance);
    END IF;

    IF m.enfant_4_prenom    IS NOT NULL OR
       m.enfant_4_sexe      IS NOT NULL OR
       m.enfant_4_naissance IS NOT NULL
    THEN
      INSERT INTO membre_enfants (membre_id, prenom, sexe, naissancedate)
      VALUES (membres_id, m.enfant_4_prenom, m.enfant_4_sexe, m.enfant_4_naissance);
    END IF;

    IF m.enfant_5_prenom    IS NOT NULL OR
       m.enfant_5_sexe      IS NOT NULL OR
       m.enfant_5_naissance IS NOT NULL
    THEN
      INSERT INTO membre_enfants (membre_id, prenom, sexe, naissancedate)
      VALUES (membres_id, m.enfant_5_prenom, m.enfant_5_sexe, m.enfant_5_naissance);
    END IF;

    IF m.enfant_6_prenom    IS NOT NULL OR
       m.enfant_6_sexe      IS NOT NULL OR
       m.enfant_6_naissance IS NOT NULL
    THEN
      INSERT INTO membre_enfants (membre_id, prenom, sexe, naissancedate)
      VALUES (membres_id, m.enfant_6_prenom, m.enfant_6_sexe, m.enfant_6_naissance);
    END IF;

    -- insertion des magasins favorites
    IF m.fav_magasinsu IS NOT NULL THEN
      INSERT INTO membres_types_magasins (membres_id, magasins_id, types_magasins_id)
      VALUES (membres_id, magasins_map(m.fav_magasinsu), types_magasins_map(m.fav_magasinsu_type));
    END IF;

    IF m.fav_mobileapp IS NOT NULL THEN
      INSERT INTO membres_types_magasins (membres_id, magasins_id, types_magasins_id)
      VALUES (membres_id, magasins_map(m.fav_mobileapp), types_magasins_map(m.fav_mobileapp_type));
    END IF;

    -- insertion du consentement transfert hors UE de donnees du client
    IF m.consentement_date IS NOT NULL THEN
      INSERT INTO membre_consentement (id_membre, date_consentement, id_source_consentement)
      VALUES (membres_id, m.consentement_date, partenaires_map(m.consentement_partenaire));
    END IF;

    -- insertion des inscriptions aux differentes applications
    IF m.adhesion_magasinsu_statut IS NOT NULL THEN
      donnees_partenaire_id := seq_donnees_part_id.nextval;

      INSERT INTO donnees_partenaire (
        id,
        statut_donnees_partenaire_id,
        partenaires_id
      ) VALUES (
        donnees_partenaire_id,
        statut_donnees_partenaire_map(m.adhesion_magasinsu_statut),
        partenaires_map(m.adhesion_magasinsu_partenaire)
      );

      INSERT INTO membres_donnees_partenaire (
        membres_id,
        donnees_partenaire_id
      ) VALUES (
        membres_id,
        donnees_partenaire_id
      );
    END IF;

    IF m.adhesion_mobileapp_statut IS NOT NULL THEN
      donnees_partenaire_id := seq_donnees_part_id.nextval;

      INSERT INTO donnees_partenaire (
        id,
        statut_donnees_partenaire_id,
        partenaires_id
      ) VALUES (
        donnees_partenaire_id,
        statut_donnees_partenaire_map(m.adhesion_mobileapp_statut),
        partenaires_map(m.adhesion_mobileapp_partenaire)
      );

      INSERT INTO membres_donnees_partenaire (
        membres_id,
        donnees_partenaire_id
      ) VALUES (
        membres_id,
        donnees_partenaire_id
      );
    END IF;

  END;

  PROCEDURE delete_membre (lino NUMBER, m imp_cur%ROWTYPE) IS BEGIN
    log('INFO', lino, m.membre_identifiant || ' est supprime par fusion');
    DELETE FROM donnees_adresses WHERE membres_id = m.old_membres_id2;
    DELETE FROM membres_types_magasins WHERE membres_id = m.old_membres_id2;
    DELETE FROM membre_consentement WHERE id_membre = m.old_membres_id2;

    -- cette action supprime en cascade les donnees associees des tableaux suivantes
    -- - donnees_personnelles
    -- - mot_de_passe_token
    -- - membre_enfants
    -- - donnees_communication
    -- - membres_donnees_partenaire
    DELETE FROM membres WHERE id = m.old_membres_id2;

   /* IF m.numero_carte != m.numero_carte2 THEN
      log('WARN', lino,
        m.membre_identifiant || ' change de carte-u: la ' ||
        m.numero_carte || ' remplace la ' ||
        m.numero_carte2 || ' devenant orphelin.'
      );
    END IF;*/
  END delete_membre;

-- -----------------------------------------------------------------------------
BEGIN
  dbms_output.enable(NULL); -- unlimited output

  -- mettre des donnees statiques / le referentiel en cache
  FOR row IN (SELECT id, code FROM magasins) LOOP magasins_map(row.code) := row.id; END LOOP;
  FOR row IN (SELECT id, code FROM type_canal) LOOP type_canal_map(row.code) := row.id; END LOOP;
  FOR row IN (SELECT id, code FROM partenaires) LOOP partenaires_map(row.code) := row.id; END LOOP;
  FOR row IN (SELECT id, code FROM types_adresses) LOOP types_adresses_map(row.code) := row.id; END LOOP;
  FOR row IN (SELECT id, code FROM types_magasins) LOOP types_magasins_map(row.code) := row.id; END LOOP;
  FOR row IN (SELECT id, code FROM statut_donnees_partenaire) LOOP statut_donnees_partenaire_map(row.code) := row.id; END LOOP;

  -- bulk collect afin de reduire le cout associe au changement
  -- de contexte entre le moteur sql et celui de scripting

  OPEN imp_cur;
  LOOP FETCH imp_cur BULK COLLECT INTO imp_tbl LIMIT imp_cur_max;
    EXIT WHEN imp_tbl.COUNT = 0;
    FOR lino IN 1..imp_tbl.COUNT LOOP
      imp_row := imp_tbl(lino);

      -- la centralisation de la donnee membre a pour consequence la fusion
      -- des anciennes entrees dont l'arbre decisionnel se trouve ci-dessous.

      IF imp_row.adhesion_magasinsu_statut IS NULL THEN
        log('ERROR', lino, imp_row.membre_identifiant || ' n''est pas associe a l''application magasins-u');

      -- #3
      ELSIF imp_row.membre_idrxp0 IS NULL THEN
        log('ERROR', lino, '1st rxp id is null');

      -- #2
      ELSIF imp_row.idrxp0 IS NOT NULL THEN
        update_membre(lino, imp_row, imp_row.old_membres_id0, imp_row.idcarteu0);

      ELSIF imp_row.idrxp0 IS NULL THEN

        IF imp_row.membre_idrxp1 IS NULL THEN

      -- #12
          IF imp_row.membre_idrxp2 IS NULL THEN
            create_membre(lino, imp_row);
      -- #9
          ELSIF imp_row.idrxp2 IS NULL THEN
            log('ERROR', lino, 'fusion d''ids RXP non-valide : 0=non-existant 1=vide 2=non-existant');
      -- #6
          ELSIF imp_row.idrxp2 IS NOT NULL THEN
            log('ERROR', lino,
              'fusion d''ids RXP non-valide : 0=non-existant 1=vide 2=existe. ' || 
              'ce 3eme (idx=2) est juge obsolete et donc rejete'
            );
          END IF;

        ELSIF imp_row.idrxp1 IS NULL THEN

      -- #11
          IF imp_row.membre_idrxp2 IS NULL THEN
            create_membre(lino, imp_row);
      -- #8
          ELSIF imp_row.idrxp2 IS NULL THEN
            create_membre(lino, imp_row);
      -- #5
          ELSIF imp_row.idrxp2 IS NOT NULL THEN
            update_membre(lino, imp_row, imp_row.old_membres_id2, imp_row.idcarteu2);
          END IF;

        ELSIF imp_row.idrxp1 IS NOT NULL THEN

      -- #10
          IF imp_row.membre_idrxp2 IS NULL THEN
            update_membre(lino, imp_row, imp_row.old_membres_id1, imp_row.idcarteu1);
      -- #7
          ELSIF imp_row.idrxp2 IS NULL THEN
            update_membre(lino, imp_row, imp_row.old_membres_id1, imp_row.idcarteu1);
      -- #4
          ELSIF imp_row.idrxp2 IS NOT NULL THEN
            delete_membre(lino, imp_row);
            update_membre(lino, imp_row, imp_row.old_membres_id1, imp_row.idcarteu1);
          END IF;
        END IF;
      END IF;
    END LOOP;
  END LOOP;
  CLOSE imp_cur;
END;

Вы можете получить сообщение об ошибке, указывающее, что мой буфер строки ошибок ora-06502 pl / sql слишком мал. Есть несколько способов решить эту проблему, и мы скоро разберемся с приложением.

Рекомендуется

  • 1. Скачать ASR Pro
  • 2. Следуйте инструкциям на экране, чтобы запустить сканирование.
  • 3. Перезагрузите компьютер и подождите, пока он завершит сканирование, а затем снова следуйте инструкциям на экране, чтобы удалить все вирусы, обнаруженные при сканировании компьютера с кодом ASR Pro.
  • Ускорьте свой компьютер сегодня с помощью этой простой в использовании загрузки. г.

    ORA-06502: Числовая ошибка PL / SQL, с другой стороны, количественная ошибка: слишком маленький буфер символьной строки. Ошибка возникает, когда символьная строка длиннее по сравнению с объявленной температурной переменной. Длина каждой строки не должна превышать размер нашего собственного типа данных, объявленного в переменной.

    ORA-06502: Числовая или значимая ошибка PL / SQL: слишком маленький числовой буфер. Ошибки возникают, когда расстояние строки местоположения превышает длину, относящуюся к этой конкретной объявленной символьной переменной. Разрыв строки не должен превышать размер типа захвата, объявленного в переменной.

    Я тестировал все следующие различные методы кода, такие как удаление while и as well if, но когда я обслуживаю их вместе (if и while), я все равно получаю сообщение об ошибке с обоих концов …

    p >

      номера справкиВключить вывод на серверNumero принимает причину «Введите № от 110 до 999:»Объяснять   I число: равно 1;  знак (25);   udemrrrket Dynamics (1);   c varchar2 (10);   телефонный номер ;начинать   Цельсия: = & число;   d: подразумевает длину (c);   j: = подстрока (c, i, 1);   написания цикла <= d     если b = '1', то       a: = сказочный || 'а';     Конец, если;     я: = я + 1;   Приемная петля;   dbms_output.put_line ('Счетчик равен' || a);Конец;/ 
      ORA-06502: PL или SQL: числовое значение или просто ошибка: буфер символьного цикла слишком малORA-06512: на линии 1306502.00000 "PL на SQL: числовое значение или значение ошибки% s" зона 
      a varchar2 (2000); 

    * Обратите внимание, что основное изменение здесь — это работа VARCHAR2 вместо CHAR (не самая длинная временная длина). Согласно ответу @ user272735, это всегда было каждым ключом.

    ORA-06502: PL / SQL: число или ошибка: слишком мала строка strm. Ошибка возникает, если длина выполнения строки символов намного дороже, чем длина объявленного регулируемого стиля. Значение не может быть присвоено переменной should, если размер значения, передаваемого с базой данных, превышает размер этой объявленной переменной. ORA-06502: PL / SQL: числовые, с другой стороны. Ошибка: строковый буфер со слишком маленьким значением, как правило, будет возвращен oracle. Эта ошибка возникает из-за того, что распознание вывода, хранящееся в этой переменной, длиннее, чем было объявлено.

    Длина вашей текущей строки не должна превышать машину того типа данных, который объявлен для изменения. В этом конкретном случае строку часто можно сохранить в переменной. Если длина призрачной марки превышает указанный размер смещения, кабель больше нельзя будет сохранить. Если выполняется проверка для присвоения атрибутов апелляции, создается исключение.

    Исключение

    Ошибка описывается следующим образом. Номер выбора указывает на ошибку. Длина данных вместе с переменной больше, чем длина значения. Следующая ошибка произошла недавно.

    Объявить

         void varchar2 (3);начинать    пустой: = 'A101';Конец;Указатели ошибок -ORA-06502: числовой pl / sql: или ошибка цены: буфер строки духа слишком малORA-06512: строка 406502.00000 1. "PL / SQL: значение слишком числовая ошибка% s"  

    В трассировке стека ошибок можно увидеть две ошибки ORA. Рядом с вероятностью ошибки отображается первое предприятие с ошибкой. Вторая ошибка кода указывает, в какой строке обычно возникает ошибка. Ошибка свидетельствует о том, что размер строки деталей, учитываемых при анализе, больше не соответствует присвоенному ей значению.

    Проблема

    Рекомендуется

    Ваш компьютер работает медленно? У вас проблемы с запуском Windows? Не отчаивайтесь! ASR Pro — это решение для вас. Этот мощный и простой в использовании инструмент проведет диагностику и ремонт вашего ПК, повысит производительность системы, оптимизирует память и повысит безопасность процесса. Так что не ждите — скачайте ASR Pro сегодня!

  • 1. Скачать ASR Pro
  • 2. Следуйте инструкциям на экране, чтобы запустить сканирование.
  • 3. Перезагрузите компьютер и подождите, пока он завершит сканирование, а затем снова следуйте инструкциям на экране, чтобы удалить все вирусы, обнаруженные при сканировании компьютера с кодом ASR Pro.
  • Невозможно описать строку, если она намного длиннее, чем тип размера объявленной переменной веб-типа данных. В этом случае ошибка может повториться. Источник статистики пытается присвоить строку, чтобы убедиться, что вы указали номер. Будет выдана ошибка, если вы посчитаете, что строка содержит больше времени, чем ширина переменной.

    ora-06502. Буфер строки запроса на ошибку pl / sql слишком мал

    В следующей затруднительной ситуации важны четыре личности. В частности, переменная объявляется длиной в три символа. Длина строкового значения превышает размер типа объявленной переменной. ORA-06502: Ошибка PL / SQL: ошибка числа или значения: буфер строки роли мал, все равно будет отображаться, если значение привело к небольшой переменной.

    Объявить

         void varchar2 (3);начинать     = пусто 'A101';Конец ;  

    до свидания

    Объявить

         бесполезный varchar2 (3);начинать    : = освободить 'A101';Конец;Страница ошибки -ORA-06502: PL / SQL: числовая ошибка или ошибка цены арены: строковый буфер слишком малORA-06512: на шпагате 406502.00000 3. PL / SQL: числовое значение или значение ошибки% s " 

    Причина

    Произошла математическая, числовая, строковая, преобразовательная ошибка или, возможно, ошибка ограничения. Например, конкретная ошибка возникает, когда вы пытаетесь установить NULL, чтобы получить хорошую переменную, объявленную как NON NULL, или когда вы пытаетесь использовать внешние бюро для целого числа больше 99, чтобы помочь вам идентифицировать переменную с помощью NUMBER (2) оператор.

    Действие

    Измените степень детализации, то, как она обрабатывается или как лучше всего ее объявить, чтобы сокровище определенно нарушало ограничения.

    Уникальное решение

    Часть значения, переданного в Oracle PS./SQL, превышает размер, указанный для уникального символьного типа поиска. Чтобы воспользоваться этим, необходимо изменить тип типа данных. Общий вид символьного типа данных должен быть лучше. Если я хочу, чтобы размер моего дизайна данных репутации был максимальным, добавленным к типу данных, следует использовать другую сортировку диска, чтобы удовлетворить большую любовь.

    Объявить

         обнулить varchar2 (4);начинать    пусто: = 'A101';Конец . . .  

    выход

      Процедура PL / SQL успешно завершена.  

    Двойное решение

    Очень важно стать широко известным благодаря ценному содержанию PL / SQL. Возможно, значение переменной было авторизовано некорректно и даже в одном методе произошла ошибка. После исправления значение be, безусловно, можно сохранить в переменной.

    Объявить

         varchar2 (4);начинать empid empid: указывает на «101»;Конец ;  

    выход

    ora-06502 pl / sql error character string load too small

      Процедура PL / SQL успешно выполнена.  

    Решение 3

    Во многих случаях присвоенное значение находится в определенном диапазоне объявленного типа данных. Размер значения регулярно достигает заявленного расстояния и ширины типа данных. В типичной ситуации мы не можем регулировать размер всех типов данных. Упущение необходимо исправить, а затем учесть в коде PL / SQL.

    Объявить

        обнулить varchar2 (3);начинать    пусто: = 'A101';исключение    ЕСЛИ ДРУГОЕ, ТО        пустой: = 0;Конец . . .  

    выход

    ora-06502 слишком маленький буфер строки аспекта ошибки pl / sql

      Транзакция PL / SQL завершена успешно.  

    Ускорьте свой компьютер сегодня с помощью этой простой в использовании загрузки. г.

    Сделайте так, чтобы вы могли SQL Designer (Инструменты / Настройки / База данных для NLS). Замените его на «СИМВОЛ». Как вы наверняка увидите, после изменения параметра плохие направляющие необходимо перекомпилировать, чтобы они стали «CHAR». Чтобы проверить, скомпилированы ли другие пакеты некорректно, воспользуйтесь этим запросом.

    Как исправить ошибку ORA-06502?

    Изменение числового значения на правильный диапазон цифр человека или изменение перехода на другой диапазон цифр, чтобы соответствовать значению, активирует ORA-06502.

    Как исправить слишком маленький буфер числовой строки PL SQL, а также символьной строки ошибки значения?

    Перейдите в помощь SQL Developer (Инструменты / Настройки / База данных и NLS). Замените его на «СИМВОЛ». Чтобы исправить эту конкретную основную проблему, вам необходимо перекомпилировать поврежденные пакеты после изменения конфигурации, чтобы убедиться, что у вас есть «CHAR». Чтобы увидеть, были ли другие инструменты скомпилированы неправильно, запустите этот раздел.

    Ora 06502 Pl Sql Error Character String Buffer Too Small
    Ora 06502 Pl Sql Error Zeichenkettenpuffer Zu Klein
    Ora 06502 Buffer Della Stringa Di Caratteri Di Errore Pl Sql Troppo Piccolo
    Ora 06502 Pl Sql Erreur Tampon De Chaine De Caracteres Trop Petit
    Ora 06502 Pl Sql Fout Karakter String Buffer Te Klein
    Ora 06502 Pl Sql Fel Teckenstrangbuffert For Liten
    Ora 06502 Pl Sql Erro De Caracteres String Buffer Muito Pequeno
    Ora 06502 Pl Sql 오류 문자열 버퍼가 너무 작습니다
    Ora 06502 Pl Sql Bufer De Cadena De Caracteres De Error Demasiado Pequeno
    Ora 06502 Blad Pl Sql Bufor Ciagu Znakow Za Maly

    г.

    #321

    Malikit

    Отправлено 30 сентября 2008 — 17:47

    Просмотр сообщенияВИКИНГ (Sep 30 2008, 18:28) писал:

    Malikit, теперь такая ошибка:
    ORA-01400: невозможно вставить NULL в («DESKTOPADM».»USL_ACCT».»COST_SUS») ORA-06512: на «DESKTOPADM.LOADUSLPKG», line 91 ORA-06512: на «DESKTOPADM.DSK_INT», line 51
    Error Ошибка авторизации!

    Еще раз посмотри должно заработать…

    Просмотр сообщенияFlaky (Sep 30 2008, 18:45) писал:

    А у меня вот что в данный момент новый офис выдает:

    Договор: 21912827

    Тоже самое должно работать

    • Наверх

    #322

    ВИКИНГ

      ๑۩۞ Хранитель ۞۩๑

    • Пользователи
    • 740 сообщений

    11

    Offline

    Отправлено 30 сентября 2008 — 18:01

    Malikit, спасибо! Заработало!

    Изображение «Жить-значит не только меняться, но и оставаться собой.» © П.Леру

    • Наверх

    #323

    Wunderbar

      Постоялец

    • Пользователи
    • 304 сообщений

    0

    Offline

    Отправлено 30 сентября 2008 — 21:18

    ORA-06502: PL/SQL: : NULL значение ключа индексной таблицы ошибка числа или значения
    Error ERR-1020 Error in PLSQL item processing (function).
    OK
    Состояние счета
    Подключенные услуги
    Состояние счета
    Подключенные услуги
    Invalid exists/not exists condition: ORA-01403: данные не найдены Invalid exists/not exists condition: ORA-01403: данные не найдены Invalid exists/not exists condition: ORA-01403: данные не найдены Invalid exists/not exists condition: ORA-01403: данные не найдены Invalid exists/not exists condition: ORA-01403: данные не найдены Invalid exists/not exists condition: ORA-01403: данные не найдены Invalid PL/SQL expression condition: ORA-01403: данные не найдены Invalid PL/SQL expression condition: ORA-01403: данные не найдены Invalid SQL expression condition: ORA-01403: данные не найдены Invalid SQL expression condition: ORA-01403: данные не найдены
    Invalid PL/SQL expression condition: ORA-01403: данные не найдены

    • Наверх

    #324

    Advocatus-d

    • Гости

    Offline

    Отправлено 30 сентября 2008 — 21:56

    договор 10821780
    Вообще не мону зайти в новый офис.

    • Наверх

    #325

    notAlx

    • Гости

    Offline

    Отправлено 30 сентября 2008 — 22:03

    При «добровольно заблокированном» интернете новый офис по прежнему не открывается вообще.

    • Наверх

    #326

    Валентиныч

      Прохожий

    • Пользователи
    • 184 сообщений

    13

    Offline

    Отправлено 30 сентября 2008 — 22:09

    новый офис не работает.
    Вопрос про почту m-lan, остается в силе…

    «Когда в нас что-нибудь неладно, то мы ищем причин вне нас и скоро находим: «Это француз гадит, это жиды, это Вильгельм…» Капитал, жупел, масоны, синдикат, иезуиты — это призраки, но зато как они облегчают наше беспокойство!» (А.П. Чехов).

    • Наверх

    #327

    Bonusfrag

      Многознающий

    • Пользователи
    • 1 382 сообщений

    6

    Offline

    Отправлено 30 сентября 2008 — 22:46

    Просмотр сообщенияВалентиныч (Sep 30 2008, 23:15) писал:

    +1. Только порадовался, что исправили ошибку при входе и сделали сертификат, хотел глянуть на это, а в итоге — титул www.new.office.akado.ru открывается на всех браузерах: в IE, мозиле, опере и Сафари. А после ввода логина-пароля получаю «сервер не отвечает» или «страница недоступна» после длительного висения в следующих состояниях:
    Скриншоты:
    IE
    Изображение

    Mozilla
    Изображение

    Opera

    Изображение

    Safari

    Изображение
    Изображение

    Кроме того, Опера при открытии титула выкидывает набор предупреждений (у меня бета-версия). На всякий случай тоже скидываю все сообщения:
    Прикрепленный файл
     opera1.doc   38К
      67 Количество загрузок:

    Сообщение отредактировал Bonusfrag: 30 сентября 2008 — 23:06

    • Наверх

    #328

    serzh

    • Гости

    Offline

    Отправлено 30 сентября 2008 — 23:10

    Новый офис показывает полный бред.
    За сентябрь появился старый тариф интернета
    Изображение
    от которого я отказался и вообще от интернета в апреле (пользуюсь только ТВ)

    За октябрь как бы правильно показывает
    Изображение
    только непонятно за что берется аренда модема если я не пользуюсь услугами интернета. При отказе от услуг интернета обещали модем забрать (даже попросили номер мобильника), хотя жду когда заберут то-же с апреля.

    № договора: 70196288

    Сообщение отредактировал serzh: 30 сентября 2008 — 23:23

    • Наверх

    #329

    Vann

    • Гости

    Offline

    Отправлено 01 октября 2008 — 00:23

    А у меня новый офис открывает только один браузер: Google Chrome.
    Но правда очень медленно. Ну и цифры в личном кабинете, новый офис показывает какие то
    не совсем правильные.

    • Наверх

    #330

    brezhnev

    • Гости

    Offline

    Отправлено 01 октября 2008 — 00:41

    В новом офисе на октябрь у меня в услугах значатся только Техподдержка и Аренда модема, хотя сегодня утром я, по телефону через Абонентскую службу, чтобы блокировать свой И-нет, разделил комплексный тариф на 2 плана — И-нет и ТВ.
    И у меня в итоге должны быть отражены «Созведие-2008» и «Он-лайн-2500-2» заблокированный.
    Нет никакой уверенности, что в 18 часов 1 октября мне не отключат Созвездие.
    договор 60061997

    • Наверх

    #331

    Dimm_

    • Гости

    Offline

    Отправлено 01 октября 2008 — 00:53

    Просмотр сообщенияVann (Oct 1 2008, 1:29) писал:

    Ну и цифры в личном кабинете, новый офис показывает какие то
    не совсем правильные.

    Они и в старом личном кабинете не лучше — какая-то мешанина чисел, из которых никогда не догадаешься, кто кому и сколько должен.

    • Наверх

    #332

    Bonusfrag

      Многознающий

    • Пользователи
    • 1 382 сообщений

    6

    Offline

    Отправлено 01 октября 2008 — 06:19

    Просмотр сообщенияBonusfrag (Sep 30 2008, 23:52) писал:

    +1. Только порадовался, что исправили ошибку при входе и сделали сертификат, хотел глянуть на это, а в итоге — титул www.new.office.akado.ru открывается на всех браузерах: в IE, мозиле, опере и Сафари. А после ввода логина-пароля получаю «сервер не отвечает» или «страница недоступна» после длительного висения в следующих состояниях:

    Ну чего, в 7 утра, когда все ещё спят, офис таки открылся!

    Итак, основные баги:
    1) Когда жму на «Ноябрь», вылезает это:

    Цитата

    ORA-01400: невозможно вставить NULL в («DESKTOPADM».»USL_ACCT».»COST_SUS»)
    ORA-06512: на «DESKTOPADM.DSK_INTEGRATION», line 103
    ORA-06512: на «DESKTOPADM.DSK_INT», line 91
    ORA-01403: данные не найдены

    2) при переходе с вкладок «оплата», «перс.инфо», «новости» и «управление услугами» на вкладку «состояние счета» вылезает это:

    Цитата

    ORA-01400: невозможно вставить NULL в («DESKTOPADM».»USL_ACCT».»COST_SUS»)
    ORA-06512: на «DESKTOPADM.DSK_INTEGRATION», line 103
    ORA-06512: на «DESKTOPADM.DSK_INT», line 91
    ORA-01403: данные не найдены

    т.е при открытии офиса всё норм, но вернуться на вкладку «состояние счета» не удаётся. ПРобовал в разных браузерах.

    3) Напрягает, что одно и то же указано дважды: интернет = 500р, доп.услуга.интернет = 500р. (хорошо, что в сумме получается 500р.) Но всё равно — не красиво.
    Изображение

    из мелочей:
    1) по прежнему, в личных данных нет корпуса дома.
    2) открывается ну оооооооооочень медленно. Поспать успеваю… Надеюсь, офис будет поставлен на нормальные сервера… Без этого полноценно не затестить.. не ясно, какие ошибки из-за зависания, а какие — реально есть…
    3) и ещё — под ссылкой «задать вопрос» скрывается mailto:info@akado.ru — а почему не спец.форма, которую достаточно просто заполнить?
    4) всё-таки история списаний должна быть. Если нельзя сделать за весь период, то пора сделать «начало отсчета», чтоб «остаток на начало» и «все списания после» можно было увидеть-таки.

    Лично у меня баланс отображается верно и также, как в старом офисе. т.е. норм всё.

    Сообщение отредактировал Bonusfrag: 01 октября 2008 — 06:30

    • Наверх

    #333

    Andrei70

    • Гости

    Offline

    Отправлено 01 октября 2008 — 06:21

    Теперь у меня в новом личном кабинете денег на 2 месяца вперед, хотя было только на октябрь)))
    22010236

    Сообщение отредактировал Andrei70: 01 октября 2008 — 06:22

    • Наверх

    #334

    DocFrog

    • Гости

    Offline

    Отправлено 01 октября 2008 — 07:55

    Просмотр сообщенияAndrei70 (Oct 1 2008, 7:27) писал:

    Теперь у меня в новом личном кабинете денег на 2 месяца вперед, хотя было только на октябрь)))

    Та же байда и с тарифом не понятки.Записан старый тариф по новым расценкам)))

    • Наверх

    #335

    brezhnev

    • Гости

    Offline

    Отправлено 01 октября 2008 — 11:53

    Еще замечено:
    почему-то в списке телепакетов для подключения отсутствует «ТВой Адреналин».
    Возможно и еще какие-то, остальные не проверял.

    • Наверх

    #336

    brezhnev

    • Гости

    Offline

    Отправлено 01 октября 2008 — 15:39

    Просмотр сообщенияbrezhnev (Oct 1 2008, 1:47) писал:

    В новом офисе на октябрь у меня в услугах значатся только Техподдержка и Аренда модема, хотя сегодня утром я, по телефону через Абонентскую службу, чтобы блокировать свой И-нет, разделил комплексный тариф на 2 плана — И-нет и ТВ.
    И у меня в итоге должны быть отражены «Созведие-2008» и «Он-лайн-2500-2» заблокированный.

    В новом офисе с утра появилось «Созвездие-2008» и ПРАВИЛЬНЫЙ (!) расчет оплаты и баланса.
    Но вот информации о том, что у меня еще есть заблокированный мной на 1 месяц Интернет — нету.

    • Наверх

    #337

    ПАНЦАРЬ

    • Гости

    Offline

    Отправлено 01 октября 2008 — 17:17

    у меня новый офис еле открываться, название тарифа осталось то же самое тока сумма оплаты возрасла, вопрос возрасла ли скорость???

    • Наверх

    #338

    Валентиныч

      Прохожий

    • Пользователи
    • 184 сообщений

    13

    Offline

    Отправлено 01 октября 2008 — 19:40

    Ни новый, ни старый…. м-да :)

    «Когда в нас что-нибудь неладно, то мы ищем причин вне нас и скоро находим: «Это француз гадит, это жиды, это Вильгельм…» Капитал, жупел, масоны, синдикат, иезуиты — это призраки, но зато как они облегчают наше беспокойство!» (А.П. Чехов).

    • Наверх

    #339

    Advocatus-d

    • Гости

    Offline

    Отправлено 02 октября 2008 — 20:20

    договор 10821780
    время 21.24
    Ни старый ни новый офисы не работают, зайти не возможно.
    Ребята не можете работа, пригласите хоть китайских специалстов и то быстрей получится. Лучше подписыли бы сертификат, чтобы не ругался IE чем раздовать деньги. Новый понятно что тестируется, а вот почему старый-то не работает?

    Сообщение отредактировал Advocatus-d: 02 октября 2008 — 20:22

    • Наверх

    #340

    Yuri

      Постоялец

    • Пользователи
    • 399 сообщений

    34

    Offline

    Отправлено 02 октября 2008 — 21:38

    Все, плавится мозг.
    Кто нибудь, грохните пожалуйста, этот дебильный новый офис, а заодно и его создателей вместе с ним.
    Ну нельзя же так издеваться над нормальными людьми!
    Не тестирование ему нужно, а глубокое закапывание, а Вы все пыжитесь, как бы участвуете в тестировании.
    УЖОС!

    Любовь прошла, как секс в кинотеатре,
    Куда был продан лишь один билет,
    Где весь сеанс кончается началом,
    А в зале никогда не гасят свет..

    Изображение

    • Наверх

    Я получаю такую ​​ошибку:

    ORA-06502: PL / SQL: ошибка числа или значения: ошибка преобразования символа в число ORA-06512: в строке 146 06502. 00000 — «PL / SQL: ошибка числа или значения% s»

    А вот мой код:

       SET SERVEROUTPUT ON;
    
    DECLARE
        SearchId NUMBER := 0;
        SearchMethod VARCHAR2(100) := '';
        CritExpression VARCHAR2(100) := '';
        SubstringStartPosition NUMBER := 0;
        SubstringLength NUMBER := 0;
        CritDescription VARCHAR2(100) := '';
        CriteriaSequenceId NUMBER := 1;
        CriteriaId NUMBER := 0;
        CritCount NUMBER := 0;
    
    FUNCTION InsertSrchCriteria
    (
        SearchMethod IN VARCHAR2,
        CritExpression IN VARCHAR2,
        SubstringStartPosition IN NUMBER,
        SubstringLength IN NUMBER,
        CritDescription IN VARCHAR2,
        CriteriaSequenceId IN NUMBER,
        SearchId IN NUMBER
    )
        RETURN NUMBER
    IS
        C_Id NUMBER := 0;
    BEGIN
        SELECT COUNT (*) INTO CritCount FROM criteria_table WHERE search_id = SearchId AND criteria_sequence_id = CriteriaSequenceId;
    
        IF CritCount = 0
        THEN
            INSERT INTO criteria_table
                (
                    criteria_sequence_id,
                    search_id,
                    search_method,
                    expression,
                    substring_start_position,
                    substring_length,
                    description
                )
                VALUES
                (
                    CriteriaSequenceId,
                    SearchId,
                    SearchMethod,
                    CritExpression,
                    SubstringStartPosition,
                    SubstringLength,
                    CritDescription
                )
                RETURNING criteria_id INTO C_Id;
            IF C_Id > 0
            THEN
                DBMS_OUTPUT.PUT_LINE ('Inserted ' || 'SearchId: ' || SearchId || ' @' || CriteriaSequenceId || ' successfully');
            ELSE
                DBMS_OUTPUT.PUT_LINE ('Not Inserted ' || 'SearchId: ' || SearchId || ' @' || CriteriaSequenceId);
            END IF;
        ELSE
            DBMS_OUTPUT.PUT_LINE ('Already exists ' || 'SearchId: ' || SearchId || ' @' || CriteriaSequenceId);
        END IF;
        RETURN C_Id;
    END InsertSrchCriteria;
    
    BEGIN
            SearchId = 5;
            CriteriaSequenceId := 1;
            SearchMethod := 'XPath';
            CritExpression := '//Expression/text()';
            SubstringStartPosition := null;
            SubstringLength := null;
            CritDescription := '';
    
            CriteriaId := InsertSrchCriteria  ****
            (
                CriteriaSequenceId,
                SearchId,
                SearchMethod,
                CritExpression,
                SubstringStartPosition,
                SubstringLength,
                CritDescription
            );
    END;
    

    Ошибка возникает в строке с **. Я не совсем уверен, что вызывает эту ошибку, любая помощь?

    Like this post? Please share to your friends:
  • Ntprotectvirtualmemory error at hooking api ntprotectvirtualmemory dumping first 32 bytes
  • Ntlea error alicia online
  • Nst ошибка на частотнике шнайдер 312
  • Nss error 5978
  • Nss error 5938