我正在使用Oracle 10g Express版本。由于函数体在Oracle中的编译错误而创建的包体
这里是我包创建代码: -
CREATE OR REPLACE PACKAGE ticketBooking
AS
PROCEDURE bookOrder(id IN NUMBER, key IN VARCHAR2, fname IN VARCHAR2, lname IN VARCHAR2, age IN NUMBER, address IN VARCHAR2, adate IN VARCHAR2, status OUT NUMBER);
PROCEDURE bookTicket(id IN NUMBER, orderID IN NUMBER, mID IN NUMBER, mRow IN NUMBER, mSeat IN NUMBER, mDate IN VARCHAR2, mTime IN NUMBER, status OUT NUMBER);
FUNCTION maxOrderID RETURN NUMBER;
FUNCTION maxTransactionID RETURN NUMBER;
END ticketBooking;
/
现在,这里是包体创作: -
CREATE OR REPLACE PACKAGE BODY ticketBooking
IS
PROCEDURE
bookOrder (id IN NUMBER, key IN VARCHAR2, fname IN VARCHAR2, lname IN VARCHAR2, age IN NUMBER, address IN VARCHAR2, adate IN VARCHAR2, status OUT NUMBER)
IS
BEGIN
INSERT INTO tbl_order (order_id, order_key, order_fname, order_lname, order_age, order_address, order_add_date)
VALUES (id, key, fname, lname, age, address, TO_DATE(adate, 'YYYY-MM-DD hh24:mi:ss'));
status := 1;
EXCEPTION
WHEN OTHERS THEN
status := 0;
END bookOrder;
PROCEDURE
bookTicket (id IN NUMBER, orderID IN NUMBER, mID IN NUMBER, mRow IN NUMBER, mSeat IN NUMBER, mDate IN VARCHAR2, mTime IN NUMBER, status OUT NUMBER)
IS
BEGIN
INSERT INTO tbl_transaction (transaction_id, order_id, movie_id, movie_row, movie_seat, movie_date, movie_time)
VALUES (id, orderID, mID, mRow, mSeat, mDate, mTime);
status := 1;
EXCEPTION
WHEN OTHERS THEN
status := 0;
END bookTicket;
FUNCTION
maxOrderID RETURN NUMBER
IS
mOID NUMBER:=0;
BEGIN
SELECT CASE WHEN MAX(order_id) > 0 THEN MAX(order_id) ELSE 0 END INTO mOID FROM tbl_order;
return (mOID);
END maxOrderID;
FUNCTION
maxTransactionID RETURN NUMBER
IS
mTID NUMBER:=0;
BEGIN
SELECT CASE WHEN MAX(transaction_id) > 0 THEN MAX(transaction_id) ELSE 0 END INTO mTID FROM tbl_transaction;
return (mTID);
END maxTransactionID;
END ticketBooking;
/
我得到那个包体与编译错误创建一个错误。 我在做什么错? 当我删除功能,那时没有警告或编译错误显示。
或查询'user_errors'视图,你可以看到什么实际的编译错误是。 –