Gar*_*ary 22 oracle plsql pls-00103
我正在使用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;
Run Code Online (Sandbox Code Playgroud)
如果我/
在第6行添加,则错误变为:
错误(6,1):PLS-00103:遇到符号"/"
我厌倦了这样一个空实现:
create or replace
package package1 as
END PACKAGE1;
CREATE OR REPLACE
package body package1 as
end package1;
Run Code Online (Sandbox Code Playgroud)
我得到了同样的错误.
And*_*lfe 27
当你有BEGIN,END等时,你处于PL/SQL,而不是SQL.
PL/SQL块需要在行的最开头用一个("正向")斜杠终止.这告诉Oracle您已完成PL/SQL块,因此它会编译该文本块.
SQL查询 - 以分号结束:
update orders set status = 'COMPLETE' where order_id = 55255;
Run Code Online (Sandbox Code Playgroud)
PL/SQL块-命令分离由分号,块由斜杠终止:
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;
/
Run Code Online (Sandbox Code Playgroud)
这对我使用Oracle SQL Developer很有用:
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 TESTE;
INSERT INTO TESTE
SELECT 1,1,1 FROM DUAL;
COMMIT;
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END;
FUNCTION afterPopulate
RETURN BOOLEAN AS
BEGIN
UPDATE TESTE SET TESTE='OK' WHERE TESTE='';
COMMIT;
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN RETURN FALSE;
END;
END TestPackage;
/
Run Code Online (Sandbox Code Playgroud)
在我真正创建它使用的表和列之前,我无法运行它.
经过几个小时的挫折后,我设法让这个东西发挥作用。我遇到了和你一样的问题。
我的解决方案是将其作为脚本运行 - 而不是在包代码中。正斜杠在 SQL 工作表中可以正常工作。我把区别贴出来,希望对你有帮助!
归档时间: |
|
查看次数: |
59321 次 |
最近记录: |