首先在一个XXXX.txt文件里写一个触发器:
create or replace trigger employee_salary_a
instead of update
on employee_salary
begin
if...then...(简单的省略了)
end;然后在cmd的sqlplus里用start c:.....XXXX.txt命令执行,按理说sqlplus每执行一个语句之后应该会自动弹出下一行的"sql:"从而继续输入指令,但是我执行触发器之后却不会弹出下一行的"sql:",而是让我接着输入,回车也没用。这是怎么回事?

解决方案 »

  1.   

    可能是我表达的不清楚,所以我把整个过程写下来首先在a.txt里写下面的代码:---------a.txt---------
    set feedback off;
    connect system/system;
    drop table sss;create table sss(
      sno char(4) not null primary key,
      sname varchar2(10) not null,
      sex char(3) not null,
      dept varchar2(4),
      age int 
    );
    insert into sss values('801','张一','女','CS',19);
    insert into sss values('802','王二','男','MA',20);
    insert into sss values('803','刘三','女','CS',22);select * from sss;
    -------a.txt---------然后cmd进入sqlplus,登录之后界面如下:SQL>_
    输入指令,正常情况下用start "c:\....(地址就省略了)\a.txt" 会得到如下结果:SNO   SNAME  SEX  ....
    ----  -----  ---  -----------
    801   张一   ....(省略了)
    802   ...    ....
    803   ...    ...
    SQL>_然后可以在“SQL>_”后面可以继续输入指令,比如select * from..之类的。但是我碰到的问题是:
    在之前的a.txt添加一个触发器的代码:---------a.txt---------
    set feedback off;
    connect system/system;
    drop table sss;create table sss(
      sno char(4) not null primary key,
      sname varchar2(10) not null,
      sex char(3) not null,
      dept varchar2(4),
      age int 
    );
    insert into sss values('801','张一','女','CS',19);
    insert into sss values('802','王二','男','MA',20);
    insert into sss values('803','刘三','女','CS',22);select * from sss;create or replace trigger jiaxin_need_bumen
    before update on sss
    for each row
    Begin
        if(dept is null) then
           dept := 'cs';
        end if;
    End;
    -------a.txt----------保存之后再次使用 start "c:\....(地址就省略了)\a.txt" ,结果变这样:SNO   SNAME  SEX  ....
    ----  -----  ---  -----------
    801   张一   ....(省略了)
    802   ...    ....
    803   ...    ...
      9   _本来应该是SQL>的地方变成了个9(应该是行号),这时候继续输入指令,比如:SNO   SNAME  SEX  ....
    ----  -----  ---  -----------
    801   张一   ....(省略了)
    802   ...    ....
    803   ...    ...
      9   select * from sss;然后按回车,没用。。会变下面这样:SNO   SNAME  SEX  ....
    ----  -----  ---  -----------
    801   张一   ....(省略了)
    802   ...    ....
    803   ...    ...
      9   select * from sss;
     10   _输入指令无效了。。一直不执行,按回车也一样。这时候输入什么都没反应,只好关掉CMD重新打开,郁闷死了。。
      

  2.   

    如5楼。你在SQL>后如果输入的是PL/SQL ,用/结束 如果导入脚本文件,文件里最后加个/