vendredi 30 septembre 2016

Problème lors de la soumission de commandes - Table dual

  • Problème lors de la soumission de commandes :

Message :
po.plsql.PO_VALIDATIONS.VALIDATE_SET.-110 : C_LINE_NUM_UNIQUE Cause : Une erreur SQL s'est produite dans po.plsql.PO_VALIDATIONS.VALIDATE_SET.. L'erreur SQL est ORA-30926: impossible d'obtenir un ensemble de lignes stables dans les tables source. Action : Notez le numéro de cette erreur et les actions que vous essayez d'exécuter. Contactez l'administrateur de votre système pour obtenir de l'aide.

Lorsqu’on suit le chemin du plantage :
po_validations.VALIDATE_SET => PO_VAL_LINES.line_num_unique => PO_VALIDATION_HELPER.child_num_unique,

On arrive à l’instruction qui plante (ORA-30926) :
FORALL i IN 1 .. p_entity_id_tbl.COUNT
MERGE INTO PO_SESSION_GT SES
USING DUAL
ON
(   SES.key = l_data_key
AND SES.index_num2 = p_entity_id_tbl(i)
)
WHEN MATCHED THEN UPDATE SET
  SES.index_num1 = p_parent_id_tbl(i),
    SES.num1 = p_entity_num_tbl(i),
    SES.index_char2 = c_NEW
WHEN NOT MATCHED THEN INSERT
( key
, index_num1
, index_num2
, num1
, index_char2
)
VALUES
( l_data_key
, p_parent_id_tbl(i)
, p_entity_id_tbl(i)
, p_entity_num_tbl(i)
, c_NEW
);

  • L’instruction plante lorsqu’il y a plusieurs lignes dans DUAL.

Solution : enlever les lignes surnuméraires de DUAL

Malgré son nom, la table dual ne doit contenir qu'une seule ligne !

jeudi 29 septembre 2016

Physique, quelques corrections d'exercices 7-1

Il y a quelques années, je me offert le livre "Feynman's tips on  physics", une édition en français existe également. Je me suis récemment résolu à résoudre les exercices proposés à la fin de l'ouvrage.

Je propose ici la solution que j'ai trouvé à l'exercice 7-1 (Chapitre des collisions non relativistes à deux corps).

Une particule de masse M collisionne parfaitement élastiquement avec une particule de masse m < M. Quel est l'angle maximum possible pour lequel la particule incidente peut être défléchie ?

Essai 1... L'angle de déflexion de M est alpha. J'écris l'énergie, la quantité de mouvement, je substitue...
Essai 2... je vais substituer V1 au lieu de V2...
J'arrive au même résultat, au moins je n'ai pas fait d'erreur dans la manipulation des fonctions trigonométriques.
Je décide de faire une rotation du système de manière à ce que mon axe des abscisses coupe l'angle de déflexion en deux parties égales.
J'ai le résultat attendu :), c'est la solution que j'ai donnée au site http://www.feynmanlectures.info/exercises/maximum_angle_deflection.html.
On peut passer des premiers feuillets à la solution en effectuant la rotation sur la solution :
J'essaierai de mettre les solutions d'autres exercices. J'espère que tout est assez lisible et les notations suffisamment évidente, mais je ne voulais pas retaper tous les calculs.


"c'est avoir tort que d'avoir raison trop tot" - Marguerite Yourcenar - Mémoires d'Hadrien