首页 > 解决方案 > 第 7 行错误:PLS-00103:遇到符号“/” - Oracle Live 教程

问题描述

我在遵循以下链接中的 Oracle Live Apex 教程时遇到问题:

https://livesql.oracle.com/apex/f?p=590:1:13286540921559:CLEAR::1:TUTORIAL_ID,P1_SHOW_LEARN_SIDEBAR:66403703756642340425947956952870068,Y

具体来说,它适用于我尝试在我的表中创建触发器作为该教程的一部分。我复制并粘贴到我的 Oracle Apex 编辑器中的代码如下:

create or replace trigger  DEPARTMENTS_BIU
    before insert or update on DEPARTMENTS
    for each row
begin
    if inserting and :new.deptno is null then
        :new.deptno := to_number(sys_guid(), 
          'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
    end if;
end;
/

create or replace trigger EMPLOYEES_BIU
    before insert or update on EMPLOYEES
    for each row
begin
    if inserting and :new.empno is null then
        :new.empno := to_number(sys_guid(), 
            'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
    end if;
end;
/

但是,当我尝试在 Oracle Apex 工作区中运行上述代码时,出现以下错误:

第 7 行错误:PLS-00103:遇到符号“/”

但是,当我在 Oracle Live SQL 空间(教程所在的位置)中运行相同的代码时,代码运行良好。那么我在 Oracle APEX 工作区中为什么会出现这样的错误?这很奇怪,因为我很确定语法是正确的,因为我从 Oracle Live 教程中复制并粘贴了上面的代码。

为方便起见,这里是上面链接中教程提供的代码,用于创建必要的表:

部门表

create table DEPARTMENTS (  
  deptno        number,  
  name          varchar2(50) not null,  
  location      varchar2(50),  
  constraint pk_departments primary key (deptno)  
);

员工表

create table EMPLOYEES (  
  empno             number,  
  name              varchar2(50) not null,  
  job               varchar2(50),  
  manager           number,  
  hiredate          date,  
  salary            number(7,2),  
  commission        number(7,2),  
  deptno           number,  
  constraint pk_employees primary key (empno),  
  constraint fk_employees_deptno foreign key (deptno) 
      references DEPARTMENTS (deptno)  
);

我还进一步研究了教程,只是在 Oracle Apex Workspace 中遇到了类似的错误,即 ORA-00933:运行以下代码时 SQL 命令未正确结束:

insert into departments (name, location) values
   ('Finance','New York');

insert into departments (name, location) values
   ('Development','San Jose');

我认为上面链接中的教程已经过时,因为 Oracle Apex Workspace 刚刚更新了它的版本,并且一些教程的代码不再有效,但情况可能并非如此。

任何帮助表示赞赏,谢谢!

标签: sqloracleoracle-apex-5

解决方案


使用 Apex,如果您想创建多个表(或触发器、函数、过程、视图等),请使用SQL 脚本- 请参阅下面的屏幕截图。

{1} 脚本编辑器(使用您的 CREATE TABLE 和 CREATE TRIGGER 语句)

在此处输入图像描述

输入所有代码,然后“运行”脚本。检查输出,并根据需要修改脚本。

{2} 输出

在此处输入图像描述

如果您更改表的 DDL 代码(然后再次运行脚本),您可能会收到错误消息 - 因为表已经存在。在这种情况下,您可以添加一行 DROP TABLE ... CASCADE CONSTRAINTS; 对于脚本开头的每个表。(但请谨慎使用,因为这将删除表,即使它们包含数据!)

对于 INSERT,您可以创建另一个 SQL 脚本(或者确实将所有 INSERTS 添加到包含 CREATE TABLE 语句的脚本中),或者您可以使用 SQL 命令并运行单个 INSERT(通过突出显示它们,然后单击“运行”按钮) . 您还可以通过使用 SQL 命令并编写 BEGIN 和 END 来运行多个 INSERT;分别在 INSERT 之前和之后 - 请参见下面的示例。

{SQL 命令,单个 INSERT:突出显示并运行}

在此处输入图像描述

{SQL 命令,多个 INSERTS}

在此处输入图像描述

请注意,有一个“历史”选项卡(在 SQL 命令窗口中)。这可能非常有用,例如它可以为您节省大量打字等。


推荐阅读