无法在sql developer 4.0中编译pl sql包

时间:2014-06-17 16:05:03

标签: plsql package oracle-sqldeveloper

我必须使用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:遇到符号" /"。

我不知道数据库的版本。

感谢您的帮助

1 个答案:

答案 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 ;.您可以将包体放在那里并进行编译。

使用这些视图,您始终在单独的选项卡中包含规范和正文。一旦两者都存在,每个都有一个按钮打开另一个 - 规范窗口有一个打开正文的按钮,反之亦然。