我必须使用sqldeveloper 4.0。但我不能编译单个包。它在其他程序中编译,但我必须使用sqldeveloper。我试着编译oracle教程包:
CREATE OR REPLACE PACKAGE emp_actions AS -- spec
TYPE EmpRecTyp IS RECORD (emp_id INT, salary REAL);
CURSOR desc_salary RETURN EmpRecTyp;
PROCEDURE hire_employee (
ename VARCHAR2,
job VARCHAR2,
mgr NUMBER,
sal NUMBER,
comm NUMBER,
deptno NUMBER);
PROCEDURE fire_employee (emp_id NUMBER);
END emp_actions;
CREATE OR REPLACE PACKAGE BODY emp_actions AS -- body
CURSOR desc_salary RETURN EmpRecTyp IS
SELECT empno, sal FROM emp ORDER BY sal DESC;
PROCEDURE hire_employee (
ename VARCHAR2,
job VARCHAR2,
mgr NUMBER,
sal NUMBER,
comm NUMBER,
deptno NUMBER) IS
BEGIN
INSERT INTO emp VALUES (empno_seq.NEXTVAL, ename, job,
mgr, SYSDATE, sal, comm, deptno);
END hire_employee;
PROCEDURE fire_employee (emp_id NUMBER) IS
BEGIN
DELETE FROM emp WHERE empno = emp_id;
END fire_employee;
END emp_actions;
我得到错误(14,1):PLS-00103:遇到符号" CREATE" - 关于创建包体线
我试着把" /"在它面前,但我得到错误(13,1):PLS-00103:遇到符号" /"。
我不知道数据库的版本。
感谢您的帮助
答案 0 :(得分:2)
如果您想同时运行这两个语句,则需要在每个语句之后加/
by itself on a new line:
CREATE OR REPLACE PACKAGE emp_actions AS -- spec
...
END emp_actions;
/
CREATE OR REPLACE PACKAGE BODY emp_actions AS -- body
...
END emp_actions;
/
...然后执行'运行脚本' (F5,或文档上带有绿色箭头图标的按钮),而不是'运行语句' (Ctrl-Enter,或只带绿色箭头的按钮)。输出将输入'脚本输出'窗格中。
您无法使用'运行语句'运行多个语句,但您仍然可以从脚本中选择一个语句的文本并自行运行 - 如果它是查询然后输出仍会显示在“查询结果”中。窗格中。
如果您已经从'文件 - >新建'创建了新的套餐。菜单项,或右键单击“包”'在对象浏览器中选择标题并选择“新包”,然后您只能在显示的窗口中输入规范(该选项卡具有包名称和包装存在的图标)。这确实更有意义 - 我认为你的第二个错误的行号是错误的,但是匹配在这个窗口中工作。
因此,在该窗口中输入包规范并进行编译。然后返回对象浏览器,刷新包列表,右键单击新包名称,然后选择“创建正文”。您将获得第二个标签,该标签看起来非常相似,但标签名称会说“'体&#39 ;.您可以将包体放在那里并进行编译。
使用这些视图,您始终在单独的选项卡中包含规范和正文。一旦两者都存在,每个都有一个按钮打开另一个 - 规范窗口有一个打开正文的按钮,反之亦然。