2017-12-18 7 views
0

を作成エラーのOracle SQL - このテーブルで動作します私は、この手順を作成した手順に

create or replace procedure enrollstudent(
    rno in STUDENTS.ROLL_NUMBER%type, 
    sname in STUDENTS.STUDENT_NAME%type, 
    cid in STUDENTS.COURSEID%type, 
    cfees in STUDENTS.FEES%type, 
    spercent in students.percentage%type 
)as 
    discount number; 
begin 
    discount := spercent*5; 
    cfees := cfees-discount; 
    insert into STUDENTS values(rno, sname, cid, cfees, spercent); 
    commit; 
end; 

CREATE TABLE STUDENTS(
    ROLL_NUMBER NUMBER(20) NOT NULL, 
    STUDENT_NAME VARCHAR2(25) NOT NULL, 
    COURSEID  NUMBER(20) NOT NULL, 
    FEES   NUMBER(20)   , 
    PERCENTAGE NUMBER(20) 
); 

私は手順の作成を実行すると、私はProcedure ENROLLSTUDENT compiledを持っており、それが作成されますが、私は広報を実行しようとする場合、私は、コンパイラのログ

Error(8,1): PL/SQL: Statement ignored 
Error(8,1): PLS-00363: expression 'CFEES' cannot be used as an assignment target 

に次のエラーを持っていますocedureは簡単なデータを持っていますPLS-00905: object [schema].ENROLLSTUDENT is invalid

答えて

2

CFEESはINパラメータです。それを変更することはできません。ローカル変数を作成し、そして、例 使用:あなたは任意のローカル変数を定義して計算する必要はありません

cfees2 NUMBER := cfees; 
cfees2 := cfees2 - discount; 
insert into STUDENTS values(rno, sname, cid, cfees2, spercent); 
0

。 (INSERTステートメントの右の)cfeesの計算を行うことができます。

create or replace procedure enrollstudent(
    rno in STUDENTS.ROLL_NUMBER%type, 
    sname in STUDENTS.STUDENT_NAME%type, 
    cid in STUDENTS.COURSEID%type, 
    cfees in STUDENTS.FEES%type, 
    spercent in students.percentage%type 
)as 
begin 
    insert into STUDENTS values(rno, sname, cid, cfees-spercent*5, spercent); 
    commit; 
end; 
/
関連する問題