Я создал процедуру для получения нескольких параметров. Но пришла ошибка компиляции. Я не смог найти проблему. пожалуйста, мне нужна помощь, чтобы найти проблему .............
мой код,
Basi c база данных клиентов, таблицы бронирования и обслуживания ниже:
CREATE TABLE CUSTOMER
(CUSTOMER_ID NUMBER(4) NOT NULL,
CUSTOMER_NAME VARCHAR2(10),
GENDER VARCHAR(10),
ADDRESS VARCHAR(50),
EMAIL VARCHAR(50),
DISCOUNT FLOAT(10),
PRIMARY KEY(CUSTOMER_ID)
);
CREATE TABLE SERVICE
(SERVICE_ID NUMBER(4) NOT NULL,
SERVICE_NAME VARCHAR(100),
CHARGE FLOAT(10),
PRIMARY KEY(SERVICE_ID)
);
CREATE TABLE RESERVATION
(RESERVATION_ID NUMBER(4) NOT NULL,
RESERVATION_DATE DATE,
CUSTOMER_ID NUMBER(4),
SERVICE_ID NUMBER(4),
EMPLOYEE_ID NUMBER(4),
PRIMARY KEY(RESERVATION_ID),
FOREIGN KEY (CUSTOMER_ID) REFERENCES CUSTOMER(CUSTOMER_ID),
FOREIGN KEY (SERVICE_ID) REFERENCES SERVICE(SERVICE_ID),
FOREIGN KEY (EMPLOYEE_ID) REFERENCES EMPLOYEE(EMPLOYEE_ID)
);
Мне нужно получить некоторые суммы из таблицы бронирования, таблицы услуг и таблицы клиентов. моя процедура ниже,
SET SERVEROUTPUT ON
CREATE OR REPLACE PROCEDURE GET_RECEIPT(
RES_ID IN RESERVATION.RESERVATION_ID%TYPE,
C_NAME OUT CUSTOMER.CUSTOMER_NAME%TYPE,
S_NAME OUT SERVICE.SERVICE_NAME%TYPE,
CHARGE_VAL OUT FLOAT(10),
DISCOUNT_VAL OUT FLOAT(10),
TOTAL_VAL OUT FLOAT(10)
)
AS
BEGIN
SELECT
c.CUSTOMER_NAME AS CUS_NAME INTO C_NAME,
s.SERVICE_NAME AS SER_NAME INTO S_NAME,
s.CHARGE AS CHAR_VAL INTO CHARGE_VAL,
c.DISCOUNT INTO DISCOUNT_VAL,
(s.CHARGE-c.DISCOUNT)AS TOTAL INTO TOTAL_VAL
FROM RESERVATION r LEFT OUTER JOIN CUSTOMER c ON r.CUSTOMER_ID=c.CUSTOMER_ID LEFT OUTER JOIN SERVICE s ON r.SERVICE_ID=s.SERVICE_ID
WHERE r.RESERVATION_ID=RES_ID;
END;
/
Но эта процедура не может быть скомпилирована. он говорит, что компиляция не удалась. как я могу это исправить?