写了个触发器但是在pl/sql中不能调试,在命令窗口中执行出现如下:
25/10 PL/SQL: ORA-00933: SQL 命令未正确结束
23/2 PL/SQL: SQL Statement ignored
26/15 PLS-00103: 出现符号 "="在需要下列之一时: := . ( @ % ; 符号 ":=在 "=" 继续之前已插入。
28/30 PLS-00103:出现符号 ","在需要下列之一时
但是 就是不能定位在哪一行,哪个地方出错!
求高人指教。
25/10 PL/SQL: ORA-00933: SQL 命令未正确结束
23/2 PL/SQL: SQL Statement ignored
26/15 PLS-00103: 出现符号 "="在需要下列之一时: := . ( @ % ; 符号 ":=在 "=" 继续之前已插入。
28/30 PLS-00103:出现符号 ","在需要下列之一时
但是 就是不能定位在哪一行,哪个地方出错!
求高人指教。
解决方案 »
- 求助:在局域网中,用PL/SQL可以连接oracle数据库,但查看表结构和执行sql就假死
- 请教oracle 10g通过0DBC连接SQL SERVER2000的问题
- 回车符问题
- 求教oracle备份问题
- oracle中的觸發器問題
- 有哪些方法可以提高大表的查询速度?
- 如何按日期插入记录
- java web工程师转oracle DBA 失败了,被裁了,怎么办啊?目前失业中......
- oracle10g中文乱码
- 版主本人绝无恶意放分,帖子地址如下,特别hooyke(红旗下的蛋)sflight(飞) bluemeteor(挂月||╭∩╮(︶_︶)╭∩╮)
- 求一sql语句
- oracle存储过程中用户权限
出现符号 ","在需要下列之一时-----------------
除非你执行的是动态sql,否则会出现1楼所说的问题,
你编译得过吗?
v_startdate date default sysdate;
v_code T_PUBAGENCY.CODE%TYPE;
v_name T_PUBAGENCY.NAME%TYPE;
v_levelno T_PUBAGENCY.LEVELNO%TYPE;
v_isleaf T_PUBAGENCY.ISLEAF%TYPE;
v_status T_PUBAGENCY.STATUS%TYPE;
v_guid T_PUBAGENCY.GUID%TYPE;
v_superitemid T_PUBAGENCY.SUPERITEMID%TYPE;
v_action number(1) default 0;
v_elementcode varchar2(30);
--v_SQL varchar2(1000);
--v_SQL1 varchar2(1000);
BEGIN
select S_PUBAGENCY.nextval into v_itemid from dual;--取序列值
v_startdate :=trunc(sysdate);
v_levelno :=:NEW.CODE/3;
v_status :=2;
v_guid :=sys_guid();
select (select nvl(max(t.itemid),0) from t_pubagency t
where t.code = substr(:NEW.code,0,length(:NEW.code)-3)) into v_superitemid from dual
v_action:=1;
v_elementcode:='AGENCY';
INSERT INTO T_PUBAGENCY (ITEMID,STARTDATE,STATUS,LEVELNO,ISLEAF,GUID,SUPERITEMID,ACTION,VERSIONNUM)
VALUES(V_ITEMID,V_STARTDATE,,V_STATUS,V_LEVELNO,V_ISLEAF,V_GUID,V_SUPERITEMID,V_ACTION,V_VERSIONNUM);
END;Warning: Trigger created with compilation errors
v_startdate date default sysdate;
v_code T_PUBAGENCY.CODE%TYPE;
v_name T_PUBAGENCY.NAME%TYPE;
v_levelno T_PUBAGENCY.LEVELNO%TYPE;
v_isleaf T_PUBAGENCY.ISLEAF%TYPE;
v_status T_PUBAGENCY.STATUS%TYPE;
v_guid T_PUBAGENCY.GUID%TYPE;
v_superitemid T_PUBAGENCY.SUPERITEMID%TYPE;
v_action number(1) default 0;
v_elementcode varchar2(30);
--v_SQL varchar2(1000);
--v_SQL1 varchar2(1000);BEGIN
select S_PUBAGENCY.nextval into v_itemid from dual;--取序列值
v_startdate :=trunc(sysdate);
v_levelno :=:NEW.CODE/3;
v_status :=2;
v_guid :=sys_guid();
select (select nvl(max(t.itemid),0) from t_pubagency t
where t.code = substr(:NEW.code,0,length(:NEW.code)-3)) into v_superitemid from dual;
v_action:=1;
v_elementcode:='AGENCY';
INSERT INTO T_PUBAGENCY (ITEMID,STARTDATE,STATUS,LEVELNO,ISLEAF,GUID,SUPERITEMID,ACTION,VERSIONNUM)
VALUES(V_ITEMID,V_STARTDATE,,V_STATUS,V_LEVELNO,V_ISLEAF,V_GUID,V_SUPERITEMID,V_ACTION,V_VERSIONNUM);
END;Warning: Trigger created with compilation errors
后面少;VALUES(V_ITEMID,V_STARTDATE,,V_STATUS
这里多一,你先改过来,看看是否能编译通过。
Errors for TRIGGER FASP.TRIG_TT_PUBAGENCY:LINE/COL ERROR
-------- ---------------------------------
28/88 PL/SQL: ORA-00984: 列在此处不允许
27/2 PL/SQL: SQL Statement ignored
改过之后还出现这种情况
你最后一个INSERT语句:
INSERT INTO T_PUBAGENCY (ITEMID,STARTDATE,STATUS,LEVELNO,ISLEAF,GUID,SUPERITEMID,ACTION,VERSIONNUM)
VALUES(V_ITEMID,V_STARTDATE,,V_STATUS,V_LEVELNO,V_ISLEAF,V_GUID,V_SUPERITEMID,V_ACTION,V_VERSIONNUM);很明显多了个逗号,改一下:
INSERT INTO T_PUBAGENCY (ITEMID,STARTDATE,STATUS,LEVELNO,ISLEAF,GUID,SUPERITEMID,ACTION,VERSIONNUM)
VALUES(V_ITEMID,V_STARTDATE,V_STATUS,V_LEVELNO,V_ISLEAF,V_GUID,V_SUPERITEMID,V_ACTION,V_VERSIONNUM);再试一试,其余的暂时还没看清楚呵呵,有PL/SQL自己调试下呗,点击错误,就锁定错误行了,你这个很明显是编译没通过呢,如楼上说,一般这种错误都是编译错误,如果是运行错误肯定是动态SQL,那他妈调死人,编译错误打印出来的东西真不是人看得懂的,呵呵,用调试器可以较为简单的定位错误所在行。