PLS-00049:错误的绑定变量(1)

时间:2013-04-04 21:48:57

标签: sql oracle compiler-errors

有人可以帮我找到我的错误吗?

CREATE OR REPLACE TRIGGER  Assign_Prix
    BEFORE INSERT OR UPDATE 
    ON DetailCommande
    FOR EACH ROW

    DECLARE
        v_NOECHELLE Integer; v_PRIX Integer;

    BEGIN

    SELECT NOECHELLE INTO v_NOECHELLE
    FROM ECHELLE
    WHERE ddebut<=:new.ddebut AND dfin>=:new.dfin;

    SELECT Min(Prix) INTO v_Prix
    FROM DETAILECHELLE
    WHERE noechelle = v_Echelle AND qtemin<=:new.qtemin;

   :NEW.PRIX:= v_Prix;

END;


CREATE TABLE Echelle 
    ( 
     NoEchelle NUMBER  NOT NULL,
     CodeProduit VARCHAR2 (15)  NOT NULL ,
     DDebut DATE NOT NULL,
     DFin DATE NOT NULL
    ) 
;
ALTER TABLE Echelle 
    ADD CONSTRAINT Echelle_PK PRIMARY KEY ( NoEchelle ) ;
ALTER TABLE Echelle
    ADD CONSTRAINT Echelle_FK_Produit FOREIGN KEY (CodeProduit)
        REFERENCES Produit(CodeProduit);


CREATE TABLE DetailEchelle
    (
     NoEchelle NUMBER NOT NULL ,
     NoDetail NUMBER NOT NULL ,
     QteMin NUMBER  NOT NULL , 
     Prix NUMBER  NOT NULL 
     )
;
ALTER TABLE DetailEchelle
    ADD CONSTRAINT DetailEchelle_PK PRIMARY KEY ( NoEchelle, NoDetail);
ALTER TABLE DetailEchelle
    ADD CONSTRAINT DetailEchelle_FK_Echelle FOREIGN KEY (NoEchelle)
        REFERENCES Echelle(NoEchelle);

CREATE TABLE Produit 
    ( 
     CodeProduit VARCHAR2 (15)  NOT NULL , 
     CodeCategorie VARCHAR2 (5)  NOT NULL ,
     Nom VARCHAR2 (30)  NOT NULL , 
     Description VARCHAR2 (100) , 
     CoutFixe NUMBER , 
     LimiteSupCF NUMBER , 
     Delai NUMBER  
    ) 
;
ALTER TABLE Produit 
    ADD CONSTRAINT Produit_PK PRIMARY KEY ( CodeProduit ) ;
ALTER TABLE Produit
    ADD CONSTRAINT Produit_FK_Categorie FOREIGN KEY (CodeCategorie)
        REFERENCES Categorie(CodeCategorie);

CREATE TABLE DetailCommande 
    ( 
     NoCommande NUMBER  NOT NULL , 
     LigneCommande NUMBER  NOT NULL ,
     Qte NUMBER  NOT NULL ,  
     Message VARCHAR2 (100) NOT NULL,
     CodeProduit VARCHAR2 (15)  NOT NULL , 
     CodeCouleur VARCHAR2 (4)  NOT NULL , 
     PrixUnitVendu NUMBER, 
     CFVendu NUMBER
    ) 
;
ALTER TABLE DetailCommande 
    ADD CONSTRAINT DetailCommande_PK PRIMARY KEY ( LigneCommande, NoCommande ) ;
ALTER TABLE DetailCommande
    ADD CONSTRAINT DetailCommande_FK_Commande FOREIGN KEY (NoCommande)
        REFERENCES Commande(NoCommande);
ALTER TABLE DetailCommande
    ADD CONSTRAINT DetailCommande_FK_Produit FOREIGN KEY (CodeProduit, CodeCouleur)
        REFERENCES ProduitCouleur(CodeProduit, CodeCouleur);

1 个答案:

答案 0 :(得分:1)

您的触发器在DetailCommande表上定义。此表没有名为ddebutdfinqteminprix的列。因此,您的触发器无法引用:new伪记录中的那些列,因为它们不存在于表中。

不幸的是,如果DetailCommande表中不存在这些列,我很难猜测你的触发器应该做什么,所以我不知道正确的语法是什么。< / p>