我正在使用Oracle Apex中的大学数据库项目,并且在尝试使用以下代码编译正文包时获得ORA-24344: success with compilation error
:
CREATE OR REPLACE PACKAGE BODY band_price_package AS
-- Function that checks if a band has a manager
FUNCTION agent_present(band_id BAND.Band_id%TYPE)
RETURN BOOLEAN
IS
BEGIN
IF BAND.Agent_firstname IS NULL
AND BAND.Agent_lastname IS NULL
AND BAND.Agent_phone IS NULL
AND BAND.Agent_email IS NULL
THEN
RETURN FALSE;
ELSE
RETURN TRUE;
END IF;
END agent_present;
-- Procedure that gets the band hire price including agent fee
PROCEDURE get_band_cost(band_id IN BAND.Band_id%TYPE,
band_cost OUT BOOKING.Agreed_band_price%TYPE)
IS
BEGIN
IF agent_present(band_id)
THEN
band_cost := BOOKING.Agreed_band_price * 1.25;
ELSE
band_cost := BOOKING.Agreed_band_price;
END IF;
END get_band_cost;
END band_price_package;
/
以下规范编译时没有任何错误:
CREATE OR REPLACE PACKAGE band_price_package AS
-- Function that checks if a band has a manager
FUNCTION agent_present(band_id BAND.Band_id%TYPE)
RETURN BOOLEAN;
-- Procedure that gets the band hire price including agent fee
PROCEDURE get_band_cost(band_id IN BAND.Band_id%TYPE,
band_cost OUT BOOKING.Agreed_band_price%TYPE);
END band_price_package;
/
答案 0 :(得分:0)
您无法直接在PL / SQL中访问表格;所以
git config --global diff.colorMoved default
语法无效。您需要在PL / SQL块中使用SQL语句,如下所示:
Oracle 11g R2架构设置:
IF BAND.Agent_firstname IS NULL
AND BAND.Agent_lastname IS NULL
AND BAND.Agent_phone IS NULL
AND BAND.Agent_email IS NULL
然后你可以这样做:
CREATE TABLE BAND(
band_id INTEGER PRIMARY KEY,
Agent_firstname VARCHAR2(200),
Agent_lastname VARCHAR2(200),
Agent_phone VARCHAR2(20),
Agent_email VARCHAR2(100)
)
/
CREATE TABLE BOOKING(
Agreed_band_price NUMBER(10,2)
)
/
CREATE OR REPLACE PACKAGE band_price_package AS
-- Function that checks if a band has a manager
FUNCTION agent_present(
i_band_id BAND.Band_id%TYPE
)
RETURN BOOLEAN;
-- Procedure that gets the band hire price including agent fee
PROCEDURE get_band_cost(
i_band_id IN BAND.Band_id%TYPE,
o_band_cost OUT BOOKING.Agreed_band_price%TYPE
);
END band_price_package;
/
答案 1 :(得分:-1)
您使用哪种工具来访问数据库?在SQLPlus中,您应该运行SHOW ERR
,它会告诉您代码有什么问题。例如:
SQL> create or replace function f_test return boolean is
2 begin
3 return 1 = 2 --> missing semi-colon
4 end;
5 /
Warning: Function created with compilation errors.
SQL> show err
Errors for FUNCTION F_TEST:
LINE/COL ERROR
-------- -----------------------------------------------------------------
4/1 PLS-00103: Encountered the symbol "END" when expecting one of the
following:
* & - + ; / at mod remainder rem <an exponent (**)> and or ||
multiset
The symbol ";" was substituted for "END" to continue.
SQL>
GUI工具通常有&#34;错误&#34; “对象导航器”中的选项卡显示相同的内容。
从您的代码开始,我会做一些盲目的猜测(因为我们没有您的桌子并且无法自己测试):