Bonjour, je debute en pl/sql j'ai pas bien comprit comment peut on avoir l'exception "too many rows" il ya plusieurs lignes?? . je veut un exemple simple. merci a tous
DROP TABLE aaa;
CREATE TABLE aaa (
b NUMBER
);
INSERT INTO aaa
VALUES (1);
DROP PROCEDURE ppp;
CREATE OR REPLACE PROCEDURE ppp
IS
BEGIN
DECLARE
dummy NUMBER;
BEGIN
SELECT b
INTO dummy
FROM aaa;
DBMS_OUTPUT.put_line ('value is ' || dummy);
END;
END;
/
exec ppp;
==> à la console nous aurons:
Procedure created.
PL/SQL procedure successfully completed.
1 row created.
value is 1
Donc tout est OK. Rajoutons une valeur et réexécutons:
INSERT INTO aaa
VALUES (2);
exec ppp;
==> à la console nouas aurons:
1 row created.
BEGIN ppp; END;
Error at line 4
ORA-01422: l'extraction exacte ramène plus que le nombre de lignes demandé
ORA-06512: à "PPP", ligne 7
ORA-06512: à ligne 1
Modifions notre procédure stockée:
CREATE OR REPLACE PROCEDURE ppp
IS
BEGIN
DECLARE
dummy NUMBER;
BEGIN
SELECT b
INTO dummy
FROM aaa;
DBMS_OUTPUT.put_line ('value is ' || dummy);
EXCEPTION
WHEN TOO_MANY_ROWS
THEN
DBMS_OUTPUT.put_line ('catched error :-)');
END;
END;
/
Et rebelotte pour une exécution:
exec ppp;
==> à la console nous aurons:
catched error :-)
Voilou...
++
du crétin, point te moquer tu ne dois
Salut
ça fait un bail que j'ai pas fait de PL/SQL
ton erreur ne serait opas de vouloir stocker plusieurs lignes dans une variable (structurée ou non).
si non, dans quel contexte se produit ton erreur ?
bouhmid86
Auteur
je veut ajouter est ce que toujours je suit obligé de faire cette exeception??? merci d'avence pour votre aide
Obtenez des réponses à vos questions sur la gestion de données, partagez des astuces et restez à jour avec les dernières avancées technologiques en matière de stockage de données.