Oracle Erreur ORA-06512
Ne peuvent tout simplement pas comprendre pourquoi il me donne l'erreur ORA-06512 Erreur
PROCEDURE PX(pNum INT,pIdM INT,pCv VARCHAR2,pSup FLOAT)
AS
vSOME_EX EXCEPTION;
BEGIN
IF ((pNum < 12) OR (pNum > 14)) THEN
RAISE vSOME_EX;
ELSE
EXECUTE IMMEDIATE 'INSERT INTO M'||pNum||'GR (CV, SUP, IDM'||pNum||') VALUES('||pCv||', '||pSup||', '||pIdM||')';
END IF;
END PX;
La base de la structure de la table où l'insert est fait:
CREATE TABLE "DB"."M12GR" (
"IDM12GR" NUMBER(10,0) NOT NULL ENABLE,
"CV" VARCHAR(5) NOT NULL ENABLE,
"SUP" FLOAT(126) NOT NULL ENABLE,
"IDM12" NUMBER(10,0) NOT NULL ENABLE,
CONSTRAINT "PRIMARY_30" PRIMARY KEY ("IDM12GR"),
CONSTRAINT "M12SUELORM12" FOREIGN KEY ("IDM12") REFERENCES "DB"."M12" ("IDM12") ENABLE
)
Quel est le message d'erreur de la pile? ORA-06512 est juste le numéro de la ligne (il serait utile de préciser que), l'erreur est dans la pile d'erreur.
ORA-06512: À "DB.PX", LIGNE 11 ORA-06512: À LIGNE 12
Vous pouvez et devriez modifier votre question pour inclure des informations supplémentaires au lieu de poster que des commentaires, où il est facile de manquer et difficile à lire.
ORA-06512: À "DB.PX", LIGNE 11 ORA-06512: À LIGNE 12
Vous pouvez et devriez modifier votre question pour inclure des informations supplémentaires au lieu de poster que des commentaires, où il est facile de manquer et difficile à lire.
OriginalL'auteur Tililin Tin Tin | 2011-10-19
Vous devez vous connecter pour publier un commentaire.
ORA-06512 fait partie de la pile d'erreur. Il nous donne le numéro de la ligne où l'erreur s'est produite, mais pas la cause de l'exception. C'est généralement indiqué dans le reste de la pile (qui vous n'avez pas encore posté).
Dans un commentaire que vous avez dit
Bien, votre code ne ce:
Qui est, il soulève une exception lorsque pNum n'est pas entre 12 et 14. Comme le reste de la pile d'erreur inclure cette ligne?
Si donc, tout ce que vous devez faire est d'ajouter un bloc d'exception pour gérer l'erreur. Peut-être:
La documentation couvre la manipulation PL/SQL exceptions en profondeur. En savoir plus.
OriginalL'auteur APC
La variable pCv est de type VARCHAR2 ainsi, lorsque vous concat l'insert vous n'êtes pas le mettre à l'intérieur des guillemets simples:
En outre, l'erreur ORA-06512 augmenter lorsque vous essayez d'insérer une valeur trop grande dans une colonne. Vérifier la définition de la table M_pNum_GR et les paramètres que vous envoyez. Juste pour clarifier, si vous essayez d'insérer une valeur de 100 sur un NUMÉRIQUE(2) champ de l'erreur de relance.
Pourriez-vous joindre le DDL de l'un de vos M_pNum_GR tables? Et êtes-vous sûr que tous ont la même structure?
CREATE TABLE "DB"."M12GR" ("IDM12GR" NUMBER(10,0) NOT NULL ENABLE, "CV" VARCHAR(5) NOT NULL ENABLE, "SUP" FLOAT(126) NOT NULL ENABLE, "IDM12" NUMBER(10,0) NOT NULL ENABLE, CONSTRAINT "PRIMARY_30" PRIMARY KEY ("IDM12GR") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "DB" ENABLE, CONSTRAINT "M12SUELORM12" FOREIGN KEY ("IDM12") REFERENCES "DB"."M12" ("IDM12") ENABLE)
Aussi, il y a 3 tables; avec la même structure
OriginalL'auteur Ernesto Campohermoso