我正在使用 Oracle sql Developer 编写一个 oracle 包,我收到此编译错误:
Error(7,1): PLS-00103: Encountered the symbol "CREATE" .
create or replace
PACKAGE TestPackage AS
FUNCTION beforePopulate RETURN BOOLEAN;
FUNCTION afterPopulate RETURN BOOLEAN;
END TestPackage;
CREATE OR REPLACE PACKAGE BODY TestPackage AS
FUNCTION beforePopulate RETURN BOOLEAN AS
BEGIN
DELETE FROM TEST_1;
INSERT INTO TEST_1
SELECT * FROM TEST WHERE VALUE=300;
COMMIT;
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END;
FUNCTION afterPopulate RETURN BOOLEAN AS
BEGIN
UPDATE TEST SET RESULT="completed" WHERE VALUE=300;
COMMIT;
RETURN TRUE;
EXCEPTION
WHEN OTHERS RETURN FALSE;
END;
END;
END TestPackage;
如果我在第 6 行添加 /
,错误将变为:
Error(6,1): PLS-00103: Encountered the symbol "/"
我厌倦了这样的空实现:
create or replace
package package1 as
END PACKAGE1;
CREATE OR REPLACE
package body package1 as
end package1;
我也犯了同样的错误。
最佳答案
当你有 BEGIN、END 等时,你就处于 PL/SQL 中,而不是 SQL 中。
PL/SQL block 需要在行首用单个(“正向”)斜杠终止。这告诉 Oracle 您已完成 PL/SQL block ,因此它会编译该文本 block 。
SQL 查询 - 以分号终止:
update orders set status = 'COMPLETE' where order_id = 55255;
PL/SQL block - 命令用分号分隔, block 由正斜杠终止:
create or replace procedure mark_order_complete (completed_order_id in number)
is
begin
update orders set status = 'COMPLETE' where order_id = :completed_order_id;
end mark_order_complete;
/
关于oracle - 创建oracle包遇到PLS-00103 : Encountered the symbol "CREATE",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9231788/