这是SQL语句,必须写完 SELECT USERID.NEXTVAL INTO :NEW.USERID FROM DUAL;
我把 USERID.NEXTVAL INTO :NEW.USERID FROM DUAL; 改为 select USERID.NEXTVAL INTO :NEW.USERID FROM DUAL;在Sql Plus 里执行还是报错,错误信息与以前一样: 表已丢弃。 表已创建。 警告: 创建的触发器带有编译错误。
select USERID.nextval into next_id from dual; :new.USERID:= next_id;
按照大家的说法我又改了一下,SQL语句如下:Drop Table X_TEST;create Table X_TEST( USERID number(2), BegDate date not null, EndDate date not null );CREATE SEQUENCE USERID INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE NOCACHE NOORDERCREATE OR REPLACE TRIGGER USERADD BEFORE INSERT ON X_TEST FOR EACH ROW BEGIN select USERID.nextval into next_id from dual; :new.USERID:= next_id;END;在Sql Plus 里执行还是报错,信息如下: 表已丢弃。 表已创建。 警告: 创建的触发器带有编译错误。
CREATE OR REPLACE TRIGGER USERADD BEFORE INSERT ON X_TEST FOR EACH ROW declare next_id number; BEGIN select USERID.nextval into next_id from dual; :new.USERID:= next_id;END; /
不行啊!按照bzszp(SongZip) 说的改了还是有错:Drop Table X_TEST;create Table X_TEST( USERID number(2), BegDate date not null, EndDate date not null );CREATE SEQUENCE USERID INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE NOCACHE NOORDERCREATE OR REPLACE TRIGGER USERADD BEFORE INSERT ON X_TEST FOR EACH ROW declare next_id number; BEGIN select USERID.nextval into next_id from dual; :new.USERID:= next_id;END;在Sql Plus 里执行还是报错,信息如下: 表已丢弃。 表已创建。 警告: 创建的触发器带有编译错误。
楼主看来是刚接触oracle,或者是太粗心了 CREATE SEQUENCE USERID INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE NOCACHE NOORDER ; 后面要有;号来结束SQL> create Table X_TEST( 2 USERID number(2), 3 BegDate date not null, 4 EndDate date not null 5 );表已创建。SQL> CREATE SEQUENCE USERID INCREMENT BY 1 START WITH 1 2 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE 3 NOCACHE NOORDER;序列已创建。SQL> CREATE OR REPLACE TRIGGER USERADD 2 BEFORE INSERT ON X_TEST 3 FOR EACH ROW 4 declare 5 next_id number; 6 BEGIN 7 select USERID.nextval into next_id from dual; 8 :new.USERID:= next_id; 9 10 END; 11 /触发器已创建SQL>
TO bzszp(SongZip) 大侠,我确实是刚接触oracle, 连这段代码我都是在网上搜到的,改了一下就出现这问题了。 什么触发器、PL/SQL之类的完全不懂,以后还请大侠多指点才是。 谢谢各位的热情解答,抱歉我的分给少了,不能给大家多加点分 :) 再次谢谢各位! 谢谢bzszp(SongZip) 大侠
SELECT USERID.NEXTVAL INTO :NEW.USERID FROM DUAL;
表已丢弃。
表已创建。
警告: 创建的触发器带有编译错误。
:new.USERID:= next_id;
USERID number(2),
BegDate date not null,
EndDate date not null
);CREATE SEQUENCE USERID INCREMENT BY 1 START WITH 1
MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE
NOCACHE NOORDERCREATE OR REPLACE TRIGGER USERADD
BEFORE INSERT ON X_TEST
FOR EACH ROW
BEGIN
select USERID.nextval into next_id from dual;
:new.USERID:= next_id;END;在Sql Plus 里执行还是报错,信息如下:
表已丢弃。
表已创建。
警告: 创建的触发器带有编译错误。
BEFORE INSERT ON X_TEST
FOR EACH ROW
declare
next_id number;
BEGIN
select USERID.nextval into next_id from dual;
:new.USERID:= next_id;END;
/
USERID number(2),
BegDate date not null,
EndDate date not null
);CREATE SEQUENCE USERID INCREMENT BY 1 START WITH 1
MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE
NOCACHE NOORDERCREATE OR REPLACE TRIGGER USERADD
BEFORE INSERT ON X_TEST
FOR EACH ROW
declare
next_id number;
BEGIN
select USERID.nextval into next_id from dual;
:new.USERID:= next_id;END;在Sql Plus 里执行还是报错,信息如下:
表已丢弃。
表已创建。
警告: 创建的触发器带有编译错误。
CREATE SEQUENCE USERID INCREMENT BY 1 START WITH 1
MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE
NOCACHE NOORDER ; 后面要有;号来结束SQL> create Table X_TEST(
2 USERID number(2),
3 BegDate date not null,
4 EndDate date not null
5 );表已创建。SQL> CREATE SEQUENCE USERID INCREMENT BY 1 START WITH 1
2 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE
3 NOCACHE NOORDER;序列已创建。SQL> CREATE OR REPLACE TRIGGER USERADD
2 BEFORE INSERT ON X_TEST
3 FOR EACH ROW
4 declare
5 next_id number;
6 BEGIN
7 select USERID.nextval into next_id from dual;
8 :new.USERID:= next_id;
9
10 END;
11 /触发器已创建SQL>
连这段代码我都是在网上搜到的,改了一下就出现这问题了。
什么触发器、PL/SQL之类的完全不懂,以后还请大侠多指点才是。
谢谢各位的热情解答,抱歉我的分给少了,不能给大家多加点分 :)
再次谢谢各位! 谢谢bzszp(SongZip) 大侠