小D 接触 ORACLE 不久 遇到一个有关触发器发面问题代码:CREATE OR REPLACE TRIGGER TS_TS002 BEFORE INSERT ON YHS.TS001
FOR EACH ROW
DECLARE
VTIME NUMBER := TO_NUMBER(TO_CHAR(SYSDATE,'FMHH24'));
WHEN(VTIME>18 AND VTIME<17 )
BEGIN
UPDATE YHS.TS002 SET NUMS=NUMS+1 WHERE TS002.ID2=:NEW.TB1;
END TS_TS002;在OEM中错误:Line # = 3 Column # = 5 Error Text = PLS-00103: Encountered the symbol "WHEN" when expecting one of the following: begin function package pragma procedure subtype type use
<an identifier> <a double-quoted delimited-identifier> form
current cursorLine # = 4 Column # = 5 Error Text = PLS-00103: Encountered the symbol "BEGIN" when expecting one of the following: * & = - + ; < / > at in is mod remainder not rem
<an exponent (**)> <> or != or ~= >= <= <> and or like
between overlaps || multiset year DAY_ member SUBMULTISET_Line # = 7 Column # = 0 Error Text = PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: end not pragma final instantiable order overriding static
member constructor map小D 分数 不够 请大虾们谅解...
FOR EACH ROW
DECLARE
VTIME NUMBER := TO_NUMBER(TO_CHAR(SYSDATE,'FMHH24'));
WHEN(VTIME>18 AND VTIME<17 )
BEGIN
UPDATE YHS.TS002 SET NUMS=NUMS+1 WHERE TS002.ID2=:NEW.TB1;
END TS_TS002;在OEM中错误:Line # = 3 Column # = 5 Error Text = PLS-00103: Encountered the symbol "WHEN" when expecting one of the following: begin function package pragma procedure subtype type use
<an identifier> <a double-quoted delimited-identifier> form
current cursorLine # = 4 Column # = 5 Error Text = PLS-00103: Encountered the symbol "BEGIN" when expecting one of the following: * & = - + ; < / > at in is mod remainder not rem
<an exponent (**)> <> or != or ~= >= <= <> and or like
between overlaps || multiset year DAY_ member SUBMULTISET_Line # = 7 Column # = 0 Error Text = PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: end not pragma final instantiable order overriding static
member constructor map小D 分数 不够 请大虾们谅解...
解决方案 »
- 从网上搜了一个ORACLE发送邮件的过程,目前邮件可以正常发送,但接收到的附件都是空的,请大神帮忙看看啥情况?
- 复杂的SQL查询语句?
- 怎样创建像decode()那样,参数个数不定的函数?
- oracle数据替换的相关问题,请大神支援~~
- 请问Oracle中有没有事件探查器。。。。。。????
- 在oracle中 如何得到本机 的机器名??? 急!!!!
- 求一简单SQL
- sqlldr导入txt数据,在数据库成生一个log_record表(最好是存储过程) 急急急..!
- 系统重装,怎样将原来的oradata文件恢复到新安装号的数据库
- Oracel如何登陆,还有Oracel账号怎么来的,需要注册吗?应该怎么注册。有没有高手指导下吧
- 求一个SQL语句
- 数据插入 不同用户plsql
VTIME NUMBER := TO_NUMBER(TO_CHAR(SYSDATE,'FMHH24'));
这一句写错了
FOR EACH ROW
DECLARE
VTIME NUMBER := TO_NUMBER(TO_CHAR(SYSDATE,'FMHH24'));
BEGIN
IF (VTIME BETWEEN 17 AND 18)
THEN --WHEN(VTIME>18 AND VTIME<17 ) 你这样写肯定报错咯
UPDATE YHS.TS002 SET NUMS=NUMS+1 WHERE TS002.ID2=:NEW.TB1;
END IF;
END TS_TS002;
VTIME>18 AND VTIME<17 限制条件冲突吧VTIME>17 AND VTIME<18
FOR EACH ROW
DECLARE
--VTIME NUMBER := TO_NUMBER(TO_CHAR(SYSDATE,'FMHH24'));
--WHEN(VTIME>18)
VTIME NUMBER;
BEGIN
SELECT TO_NUMBER(TO_CHAR(SYSDATE,'FMHH24')) INTO VTIME FROM DUAL;
IF VTIME < 8 AND VTIME >17
THEN UPDATE YHS.TS002 SET NUMS=NUMS+1 WHERE TS002.ID2=:NEW.TB1;
END IF;
END TS_TS002;我换 成IF 就 OK 了是不是 WHEN 没办法 用逻辑 关键字啊...
while(VTIME < 8 AND VTIME >17)
THEN UPDATE YHS.TS002 SET NUMS=NUMS+1 WHERE TS002.ID2=:NEW.TB1;
FOR EACH ROW
DECLARE
VTIME NUMBER;
BEGIN
SELECT TO_NUMBER(TO_CHAR(SYSDATE,'FMHH24')) INTO VTIME FROM DUAL;
IF VTIME < 8 AND VTIME >17
THEN UPDATE YHS.TS002 SET NUMS=NUMS+1 WHERE TS002.ID2=:NEW.TB1;
--如果时间段不是8-17时就更新 操作记录到指定数据库
--具体操作功能在此添加
END IF;
END TS_TS002;问题 已经解决 感谢 各位
感谢 CSDN
将 TEST 过的 代码 SHARE 出来 方便其他 需要的人....