1
J'écris une procédure simple.Erreur lors de la comparaison des valeurs dans Oracle
DECLARE
connection_id LINE.CONNECTION_ID%TYPE := 11009;
tmp_integer INTEGER;
BEGIN
SELECT COUNT(*) INTO tmp_integer FROM LINE WHERE LINE.CONNECTION_ID = 11009;
DBMS_OUTPUT.PUT_LINE(connection_id);
DBMS_OUTPUT.PUT_LINE(tmp_integer);
END;
Résultat du lancement:
11009
3
Il est bon résultat. J'ai seulement 3 lignes où CONNECTION_ID est 11009. Après modification:
DECLARE
connection_id LINE.CONNECTION_ID%TYPE := 11009;
tmp_integer INTEGER;
BEGIN
SELECT COUNT(*) INTO tmp_integer FROM LINE WHERE LINE.CONNECTION_ID = connection_id;
DBMS_OUTPUT.PUT_LINE(connection_id);
DBMS_OUTPUT.PUT_LINE(tmp_integer);
END;
Mais dans ce cas, je gagne étrange résultat:
11009
30997
Où est l'erreur?
Oui, c'est une erreur. Merci! –
De rien - Remarque supplémentaire: il est recommandé d'adopter un style de codage qui réduit les risques de collision entre les variables PL/SQL et les noms de colonne, par ex. v_COLUMN_NAME ou vCOLUMN_NAME - dans votre code, cela était facile à repérer, mais les paquets avec de longues définitions de curseur et de nombreuses variables peuvent entraîner beaucoup de déboguage. – dpbradley