我正在使用Oracle sql开发人员编写一个oracle包,我得到了这个编译错误:
错误(7,1):PLS-00103:遇到符号“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行添加 /
,则错误变为:
错误(6,1):PLS-00103:遇到符号“/”
我厌倦了这样一个空实现:
create or replace
package package1 as
END PACKAGE1;
CREATE OR REPLACE
package body package1 as
end package1;
我得到了同样的错误 .
6 回答
当你有BEGIN,END等时,你处于PL / SQL,而不是SQL .
PL / SQL块需要在行的最开头以单个(“前向”)斜杠终止 . 这告诉Oracle您已经完成了PL / SQL块,因此它编译了该块文本 .
SQL查询 - 以分号结束:
PL / SQL块 - 由分号分隔的命令,块由正斜杠终止:
这对我使用Oracle SQL Developer很有用:
在实际创建它使用的表和列之前,我无法运行它 .
经过几个小时的挫折,我设法使这些东西工作 . 我和你一样遇到了 exact 问题 .
我的解决方案是将其作为脚本运行 - 而不是在包代码中 . 正斜杠在SQL工作表中正常工作 . 我附加了差异,我希望它能帮到你!
用F5分别执行包和包体
我有同样的问题 . 我使用左侧的主菜单创建包,并将包声明和主体放在相同的.sql文件中 . 当我复制所有代码并将其粘贴到新工作表中并在结束package_name之后放入“/”(包声明和正文之后)然后执行工作表作为脚本时,问题就解决了 .
我有这个问题(错误(6,1):PLS-00103:出现“/”符号)时,我coppied所有数据库封装代码(包括程序头和实现)中的SQLDeveloper到用户/包/ MY_PACKAGE_NAME / MY_PACKAGE_BODY代替将 Headers (最后没有'/')复制到user / packages / MY_PACKAGE_NAME和实现(顶部没有 Headers ,最后没有'/')到user / packages / MY_PACKAGE_NAME / MY_PACKAGE_BODY .