Comment attraper violation de contrainte en PL/SQL?

CREATE TABLE LOCATION (
  LOCID VARCHAR2(5)
, MINQTY    NUMBER
, MAXQTY    NUMBER
, PRIMARY KEY   (LOCID)
, CONSTRAINT CHECK_LOCID_LENGTH CHECK (LENGTH(LOCID) = 5)
, CONSTRAINT CHECK_MINQTY_RANGE CHECK (MINQTY BETWEEN 0 AND 999)
, CONSTRAINT CHECK_MAXQTY_RANGE CHECK (MAXQTY BETWEEN 0 AND 999)
, CONSTRAINT CHECK_MAXQTY_GREATER_MIXQTY CHECK (MAXQTY >= MINQTY)
);


CREATE OR REPLACE PROCEDURE ADD_LOCATION_TO_DB(ploccode VARCHAR2, pminqty NUMBER, pmaxqty NUMBER) AS
BEGIN
INSERT INTO location(locid, minqty, maxqty) VALUES (ploccode, pminqty, pmaxqty);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
RAISE_APPLICATION_ERROR(-20081, 'Duplicate Location ID');
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20086,sqlerrm);
END;

J'ai créé le tableau ci-dessus avec des contraintes.
Maintenant, je veux tester ces contraintes en PL/SQL de la procédure par les attrapant dans les exceptions. Mais je suis confus comment le faire.

sql-server ne pas utiliser de PL/SQL. Avez-vous besoin d'une solution à la fois pour elle et oracle?
Je veux le code PL/SQL pour une procédure qui insère une ligne dans la table magasin et que vous souhaitez tester les contraintes en pl/sql de la procédure. Mais je ne suis pas certain que le code de la façon de vérification de la contrainte.
Oui, mais vous avez marqués cette question avec deux produits, et l'un de ces produits n'ont même pas de PL/SQL. Avez-vous vraiment besoin d'une solution pour les deux produits?
J'ai enlevé le sql-server balise parce que la question est clairement sur Oracle et PL/SQL.
Il n'y a pas d'exception prédéfinie pour une violation de contrainte de vérification (voir ici: docs.oracle.com/cd/E11882_01/appdev.112/e25519/...), vous devez vérifier le code d'erreur dans le when others gestionnaire

OriginalL'auteur | 2014-04-23