我是PL / SQL的新手。我使用oracle 11g XE和sql developer。我尝试创建以创建后插入触发器,如下所示
create or replace trigger tr1
after
insert ON
employee
for each row
begin
print :new.emp_id;
end;
员工表格如下
create table employee
( emp_id varchar2(5) primary key,
emp_name varchar2(10),
salary number,
company varchar2(10) foreign key references companies(comp_name)
);
当我发表声明时,我得到了一个'输入绑定' bind变量的窗口:new。但我很困惑,为什么我需要输入值:new,因为它是伪记录。然后我进入了员工'作为:new的值。现在我收到以下错误。
Error(2,8): PLS-00103: Encountered the symbol "" when expecting one of the following: := . ( @ % ; The symbol ":=" was substituted for "" to continue.
答案 0 :(得分:0)
您的问题不在:new
伪记录中。该错误来自print的使用,{{3}}用于打印成功的 PL / SQL块中使用的或在EXECUTE命令中使用的绑定变量。例如,您可以这样使用它:
VARIABLE n NUMBER
BEGIN
:n := 1;
END;
/
然后
PRINT n;
但是如果要测试插入的值,可以像这样使用DBMS_OUTPUT.PUT_LINE:
create or replace trigger tr1
after
insert ON
employee
for each row
BEGIN
dbms_output.put_line(:new.emp_id);
END;
/
在SQL Developer中启用DBMS_OUTPUT窗口,然后运行
insert into employee values(1, 'empName', 1000, 'ABC');
您会看到1
已打印出来。
但是,您始终可以测试表中的值。因为该值应该已经插入表中。你可以查询。