CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  SQL Anywhere Studio

ORACLE触发器编译通不过?

楼主chfhy(春风化雨)2001-08-01 14:47:35 在 其他数据库开发 / SQL Anywhere Studio 提问

CREATE   OR   REPLACE   TRIGGER   UPCOMRTU_WRTUYCNUM   BEFORE   UPDATE   OF   WRTUYCNUM   ON   COMRTU  
  FOR   EACH   ROW  
  DECLARE  
          COUNT   COMYC.WRTUNUM%TYPE;  
          RTUNO   COMYC.YC_NO%TYPE;  
          NEWCOUNT   NUMBER(5);  
          OLDCOUNT   NUMBER(5);  
  BEGIN  
          RTUNO   :=   :NEW.WRTUNUM;  
          OLDCOUNT   :=   :OLD.WRTUYCNUM;  
          NEWCOUNT   :=   :NEW.WRTUYCNUM;  
          IF   OLDCOUNT   >   NEWCOUNT   THEN  
                    DELETE   FROM   COMYC   WHERE   COMYC.YC_NO   >=   NEWCOUNT   AND   WRTUNUM   =   RTUNO;  
          ELSIF   OLDCOUNT   <   NEWCOUNT   THEN  
                    COUNT   :=   OLDCOUNT;  
                    WHILE   COUNT   <   NEWCOUNT   LOOP  
                            INSERT   INTO   COMYC   VALUES(RTUNO,   COUNT,   0,   0,   0,   0,   1.0,   0.0,   0,   999999.0,   0.0,   1);  
                            COUNT   :=   COUNT+1;  
                    END   LOOP;  
          END   IF;  
  END   UPCOMRTU_WRTUYCNUM;  
   
  我把WHILE   LOOP...END   LOOP去掉就能编译通过,难道触发器中不能用WHILE循环?   问题点数:30、回复次数:15Top

1 楼chfhy(春风化雨)回复于 2001-08-01 15:04:24 得分 0

急呀!Top

2 楼feng_zi(二度程序员)回复于 2001-08-01 15:34:07 得分 0

可以呀,看程序我没看出什么错来,你能给出所报的error吗?  
  在触发器中可用while循环,这样的触发器我做过Top

3 楼chfhy(春风化雨)回复于 2001-08-01 15:38:08 得分 0

ERROR就是:警告:   创建的触发器带有编译错误,  
  feng_zi(风子)贴一个例子出来吧 Top

4 楼feng_zi(二度程序员)回复于 2001-08-01 15:50:14 得分 10

现在做一个,有点简单  
  create   trigger   akai_xiao  
  before   update   on   akai  
  for   each   row  
  declare  
  i   integer;  
  begin  
      i:=1;  
      while   i<10   loop  
        insert   into   xiao(akai)   values(1);  
        i:=i+1;  
      end   loop;  
  end;Top

5 楼feng_zi(二度程序员)回复于 2001-08-01 15:51:22 得分 0

我的QQ号是1434341,讨论如何?Top

6 楼chfhy(春风化雨)回复于 2001-08-01 16:10:46 得分 0

feng_zi(风子) 很想和你讨论,但我现在上不去QQ,如果你愿意先去http://www.csdn.net/expert/topic/218/218981.shtm领20分吧Top

7 楼chfhy(春风化雨)回复于 2001-08-01 16:45:20 得分 0

还有谁知道?Top

8 楼shenyimin(shenyimin)回复于 2001-08-01 17:01:52 得分 15

用show   err看看出错的代码在哪里,再进一步修正。建议用一些好使的开发工具如rapidSQL,单纯用sql*plus这把钝刀做开发效率太低。Top

9 楼chfhy(春风化雨)回复于 2001-08-01 17:06:19 得分 0

rapidSQL那有下载?Top

10 楼feng_zi(二度程序员)回复于 2001-08-01 17:16:32 得分 0

我有不过它太大了,Toad只有2MB,你要吗?Top

11 楼chfhy(春风化雨)回复于 2001-08-01 17:29:55 得分 0

MY   EMAIL:wangzh18@sohu.com   ,谢谢!那个工具好一些?Top

12 楼feng_zi(二度程序员)回复于 2001-08-01 17:42:49 得分 0

你上http://www.5xsoft.com/index.html  
  好象有rapid   sql,我给发toad,发不到你的信箱Top

13 楼chfhy(春风化雨)回复于 2001-08-01 18:02:33 得分 0

为什么发不到呀?rapid   sql我也没找到Top

14 楼GreenDragon(绿龙)回复于 2001-08-01 19:32:44 得分 5

这是因为行级触发器不允许对变化表(既触发表)进行读取或修改操作。  
  要消除该问题,可以利用包和语句级触发器。首先在行级触发器中读取需要的数值付给包中的变量,语句级触发器再从包中的相应变量获取数值进行相关操作。  
  支持该方法可行的依据是触发器的点火次序。触发器的点火顺序应为:BEFORE语句级触发器-BEFORE行级触发器-AFTER行级触发器-AFTER语句级触发器Top

15 楼chfhy(春风化雨)回复于 2001-08-01 20:10:10 得分 0

问题解决,但不是GreenDragon(绿龙)说的,是COUNT不能用,还有其他问题,谢谢大家!给分! Top

相关问题

  • 触发器(ORACLE)!!!!!!!!!
  • 触发器(ORACLE)!!!!!!!!!
  • oracle 触发器??
  • oracle 10g 触发器
  • 我的触发器编译通过,为何却无法成功?
  • Oracle中触发器与外部程序通信的问题!
  • Oracle的触发器怎样实现通过时间触发?
  • ORACLE与SQLSERVER触发器有何区别?
  • ORACLE中执行触发器的问题
  • oracle触发器的问题?请帮忙!

关键词

  • comyc
  • oldcount
  • wrtuycnum
  • rtuno
  • wrtunum
  • newcount
  • yc
  • number
  • type

得分解答快速导航

  • 帖主:chfhy
  • feng_zi
  • shenyimin
  • GreenDragon

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo