posts - 11,  comments - 1,  trackbacks - 0

 Introduction
------------

This document lists the order in which triggers fire in Oracle Forms 4.5:
 o  The first column, Action, describes the function to be performed
    (e.g. deleting a record).
 o  The second column, Trigger Firing Order, describes the order
    in which triggers fire after a function is performed.
 o  The third column, Level, describes the level (form, block, item)
    at which the trigger fires.  This was accomplished by creating a form
    with all the triggers invoked.  If a trigger could fire at all levels,
    it was included at all levels.  Such a trigger fires at the lowest level
    at which it is defined.

Key triggers and triggers which fire via buttons or check boxes are
not included.

This bulletin does not cover every contingency and covers only the
most commonly used actions.

Action                 Trigger Firing Order                    Level
------                 --------------------                    -----
Runform                 1.  Pre-Logon                          Form
                        2.  On-Logon                           Form
                        3.  Post-Logon                         Form
                        4.  Pre-Form                           Form
                        5.  When-Create-Record                 Block
                        6.  Pre-Block                          Block
                        7.  Pre-Record                         Block
                        8.  Pre-Text-Item                      Item
                        9.  When-New-Form-Instance             Form
                        10. When-New-Block-Instance            Block
                        11. When-New-Record-Instance           Block
                        12. When-New-Item-Instance             Item

***********
Enter Query             1.  Post-Text-Item                     Item
                        2.  Post-Record                        Block
                        3.  When-Clear-Block                   Block
                        4.  When-New-Record-Instance           Block
                        5.  When-New-Item-Instance             Item

Note: If you define the Key-ENTQRY trigger, this is the only trigger
      which fires in an Enter Query situation.


*****************
Execute Query
After Enter Query       1.  Pre-Query                          Block
                        2.  Pre-Select                         Block
                        3.  On-Select                          Block
                        4.  When-Clear-Block                   Block
                        5.  Post-Select                        Block
                        6.  On-Fetch                           Block
                        7.  On-Close                           Form
                        8.  When-Clear-Block                   Block

Note: If you define the Key-EXEQRY trigger, this is the only trigger
      which fires in an Execute Query situation.


*************
Execute Query
Without Enter
Query                   1.  Post-Text-Item                     Block
                        2.  Pre-Query                          Block
                        3.  Pre-Select                         Block
                        4.  On-Select                          Block
                        5.  Post-Select                        Block
                        6.  On-Fetch                           Block
                        7.  On-Close                           Form
                        8.  When_Create_Record                 Block
                        9.  Pre-Record                         Block
                        10. Pre-Text-Item                      Item
                        11. When-New-Record-Instance           Block
                        12. When-New-Item-Instance             Item


****
Exit                    1.  Post-Text-Item                     Item
                        2.  Post-Record                        Block
                        3.  Post-Block                         Block
                        4.  Post-Form                          Form
                        5.  On-Rollback                        Form
                        6.  Pre-Logout                         Form
                        7.  On-Logout                          Form
                        8.  Post-Logout                        Form


**************
Next Field and
Previous field          1.  When-New-Item-Instance             Item


***************
Next Record and
Previous Record         1.  When-New-Record-Instance           Block
                        2.  When-New-Item-Instance             Item

**************
Next Block and
Previous Block          1.  Post-Text-Item                     Item
                        2.  Post-Record                        Block
                        3.  Post-Block                         Block
                        4.  When-Create-Record                 Block
                        5.  Pre-Block                          Block
                        6.  Pre-Record                         Block
                        7.  Pre-Text-Item                      Block
                        8.  When-New-Block-Instance            Block
                        9.  When-New-Record-Instance           Block
                        10. When-New-Item-Instance             Form


*******************
Records Are Queried     1.  Post-Query                         Block
                        2.  Post-Change                        Block
                        3.  Post-Change                        Item
                        4.  Post-Change                        Block
                        5.  Post-Change                        Block
                        Go back to Post-Query

NOTE: This cycle is repeated for each record retrieved.


**********************
No Records Are Queried  1.  When-New-Record-Instance           Block
                        2.  When-New-Item-Instance             Item

NOTE: To observe this Trigger Firing Order:
        a.  Enter a query.
        b.  Enter a nonexistent record.
        c.  Execute the query.

      The two triggers listed above, the Enter Query triggers, and
      the Execute Query triggers fire.


*************
Create Record           1.  Post-Change                         Block
                        2.  When-Validate-Item                  Block
                        3.  Post-Text-Item                      Block
                        4.  When-Validate-Record                Block
                        5.  Post-Record                         Block
                        6.  Post-Block                          Block
                        7.  On-Savepoint                        Form
                        8.  Pre-Commit                          Form
                        9.  Pre-Insert                          Block
                        10. On-Insert                           Form
                        11. Post-Insert                         Block
                        12. Post-Forms-Commit                   Form
                        13. On-Commit                           Form
                        14. Post-Database-Commit                Form
                        15. Pre-Block                           Block
                        16. Pre-Record                          Block
                        17. Pre-Text-Item                       Block
                        18. When-New-Item-Instance              Form


*************
Update Record           1.  When-Database-Record                Block
                        2.  Post-Change                         Block
                        3.  When-Validate-Item                  Block
                        4.  Post-Text-Item                      Block
                        5.  When-Validate-Record                Block
                        6.  Post-Record                         Block
                        7.  Post-Block                          Block
                        8.  On-Savepoint                        Form
                        9.  Pre-Commit                          Form
                        10. Pre-Update                          Block
                        11. On-Update                           Block
                        12. Post-Update                         Block
                        13. Post-Forms-Commit                   Form
                        14. On-Commit                           Form

                        Here the transaction is complete and one record added.

                        15. Post-Database-Commit                Form
                        16. Pre-Text-Item                       Block
                        17. When-New-Item-Instance              Form

NOTE: To observe this Trigger Firing Order:

        a.  Execute a query.
        b.  Change a value.
        c.  Choose Action->Save from the menu.
        d.  Record the triggers from that point.


*************
Delete Record           1.  On-Lock                             Block
                        2.  When-Remove-Record                  Block
                        3.  Post-Change                         Block
                        4.  Post-Change                         Block
                        5.  Post-Change                         Block
                        6.  Post-Change                         Block
                        7.  Post-Change                         Block
                        8.  Post-Change                         Block
                        9.  Post-Change                         Item
                        10. Post-Query                          Block
                        11. Post-Text-Item                      Block
                        12. Post-Record                         Block
                        13. Pre-Record                          Block
                        14. Pre-Text-Item                       Block
                        15. When-New-Record-Instance            Block
                        16. When-New-Item-Instance              Form

NOTE: To observe this Trigger Firing Order, delete a detail record.

posted @ 2009-09-04 13:40 惠子 阅读(372) | 评论 (0)编辑 收藏
1、  新的一年又来了,我还活着;我竟然还活着。
2、 在过去的一年中,肯定有很多人很不情愿地离开了这个世界,若不快乐地活着,很对不起他们离去时对生命的眷恋。
3、 让爱我的人看着我快乐,那是对他们最好的报答。
4、 让恨我的人看着我快乐,那是对他们最好的报复。
5、 忧伤或者快乐,都是一样地过日子,选择快乐并不会更麻烦一些。
6、 也许生活中确实发生了一些令人忧伤的事,快乐不可能改变事实,但却能改变这些事件可能导致的最后结果。
7、 与其为忧伤而忧伤,不如用快乐驱赶忧伤。
8、 在任何时候,快乐都是给自己和给他人的最好的礼物,而忧伤不是。
9、 快乐比忧伤道德,佛所说的慈悲的意思,就是与一切众生乐,拔一切众生苦。
10、 快乐比忧伤健康,被快乐滋养的心灵和躯体能更好地抵御疾病的侵袭。
11、 快乐当然也比忧伤更美丽,就像阳光比乌云更美丽一样。
12、 因为情绪是可以传染的,所以在人际关系中,快乐是一种礼貌,而忧伤是一种不礼貌。
13、 人一生下来就会哭,笑是后来才学会的,所以忧伤是一种低级的本能,而快乐是一种更高级的能力。
14、 快乐并不昂贵,有时候它只需要几分钟的幻想、几句交谈或者几个笑声。
15、 当快乐成为一种习惯的时候,你甚至不需要给快乐找理由。因为快乐,所以快乐。

              摘自<<心相约>>周刊
posted @ 2008-11-11 09:58 惠子 阅读(49) | 评论 (0)编辑 收藏
     摘要:   阅读全文
posted @ 2008-08-25 17:37 惠子 阅读(124) | 评论 (0)编辑 收藏
     摘要:   阅读全文
posted @ 2008-08-19 22:29 惠子 阅读(1078) | 评论 (0)编辑 收藏
     摘要:   阅读全文
posted @ 2008-07-25 01:23 惠子 阅读(99) | 评论 (0)编辑 收藏

序列:

自动产生的唯一值;
一个共享的对象;
典型的用法是作为主键的值;
insert into 给主键提供值。
替代了应用的代码;
通过将序列CACHE(预先生成一部分序列号,放入到内存中)到内存中,可以加速对序列的访问。

CREATE SEQUENCE sequence_name
  [increment by n]//步长
  [start with n]//起始点
  [maxvalue n/nomaxvalue]//递增
  [minvalue n/nominvalue]//递减
  [cycle/nocycle]//循环
  [cache n/nocache];//n为预先生成序列号的个数,默认为20。

查询序列:
user_sequences
last_number 序列将要产生的下一个号是多少;

select sequence_name,min_value,max_value,increment_by last_number from user_sequences;

伪列:NEXTVAL 引用下一个可用的序列值,不同的用户每次引用都会获得一个唯一的值。
      CURRVAL 得到当前的值(刚被领走的号)。
在CURRVAL执行前必须先通过NEXTVAL得到一个初始的值。

序列名.NEXTVAL/CURRVAL
  
序列发生间隙是正常的,保证唯一即可。


序列的修改:
   ALTER SEQUENCE sequence_name 
   increment by
  maxvalue
  cycle    
  cache;

start with 不能修改。

删除序列:

drop  SEQUENCE sequence_name;

 


索引:

一个方案中的对象;
被ORACLE服务器用来加速对表的查询;
通过使用快速路径访问方法快速定位数据;
与表独立存放;
被ORACLE服务器使用和维护。

一定是 WHERE 条件的才有可能使用索引。


手动创建索引:
CREATE INDEX index_name on table_name (col_name);

考虑创建索引的情况:
*、包含了大量不同值的列;
*、包含了大量空值的列;
*、一个或者多个列经常被一起出现在 WHERE 条件中或者作为连接的条件出现;
*、表的数据量很大,而且对表的查询经常是得到表中数据的2%到4%(少量数据).


不应该创建索引的情况:
*、一个很小的表;
*、列很少被用于查询的条件;
*、表上的大多数查询是得到大量数据的;
*、表中的数据经常发生变动;
*、要被索引的列被作为条件表达式的一部分。


查看:
user_indexes得到索引的定义和唯一性。

user_ind_columns 得到索引的名称,表名和列名。
select ic.index_name,ic.column_name,ic.column_position,
 ic.uniquenes
from user_indexes ix,user_ind_columns ic
where ic.index_name=ix.index_name and ic.table_name='table_name';

删除索引:
DROP INDEX index_name;
为了删除索引,必须拥有索引或者拥有DROP ANY INDEX 权限。 

posted @ 2008-07-25 01:19 惠子 阅读(84) | 评论 (0)编辑 收藏

在国内外大中型数据库管理系统中,把ORACLE作为数据库管理平台的用户比较多。ORACLE 不论是数据库管理能力还是安全性都是无可非议的,但是,它在汉 字信息的显示方面着实给中国用户带来不少麻烦,笔者多年从事ORACLE数据库管理,经常收到周围用户和外地用户反映有关ORACLE数据库汉字显示问题 的求援信 ,主要现象是把汉字显示为不可识别的乱码,造成原来大量信息无法使用。本文将就这一问题产生的原因和解决办法进行一些探讨,供存在这方面问题的用户朋友参 考。
1、原因分析
通过对用户反映情况的分析,发现字符集的设置不当是影响ORACLE数据库汉字显示的关键问题。那么字符集是怎么一会事呢?字符集是ORACLE 为适应不同语 言文字显示而设定的。用于汉字显示的字符集主要有ZHS16CGB231280,US7ASCII,WE8ISO8859P1等。字符集不仅需在服务器端 存在,而且客户端也必须有字符集 注册。服务器端,字符集是在安装ORACLE时指定的,字符集登记信息存储在ORACLE数据库字典的V$NLS_PARAMETERS表中;客户端,字 符集分两种情况,一种情况是sql*net 2.0以下版本,字符集是在windows的系统目录下的oracle.ini文件中 登记的;另一种情况是sql*net 2.0以上(即32位)版本,字符集是在windows的系统注册表中登记的。要在客户端正确显示ORACLE 数据库汉字信息,首先必须使服务器端的字符集与客户端的字符集一致;其次是加载到ORACLE数据库的数据字符集必须与服务器指定字符集一致。因此,把用 户存在的问题归纳分类,产生汉字显示异常的原因大致有以下几种:
1. 1服务器指定字符集与客户字符集不同,而与加载数据字符集一致。
这种情况是最常见的,只要把客户端的字符集设置正确即可,解决办法见2 .1。
1. 2服务器指定字符集与客户字符集相同,与加载数据字符集不一致。
这类问题一般发生在ORACLE版本升级或重新安装系统时选择了与原来服务器端不同的字符集,而恢复加载的备份数据仍是按原字符集卸出的场合,以及加载从
其它使用不同字符集的ORACLE数据库卸出的数据的情况。这两种情况中,不管服务器端和客户端字符集是否一致都无法显示汉字。解决办法见2.2。
1.3服务器指定字符集与客户字符集不同,与输入数据字符集不一致。
这种情况是在客户端与服务器端字符集不一致时,从客户端输入了汉字信息 。输入的这些信息即便是把客户端字符集更改正确,也无法显示汉字。解决办法见2.3。
2.解决办法
下面将分别对上述三种情况给出解决办法。为了叙述方便,假设客户端使用 WINDOWS95/98环境,并已成功地配置了TCP/IP协议,安装了ORACLE的sql*net,sql*pluse产品。
2.1 设置客户端字符集与服务器端字符集一致
假设当前服务器端使用US7ASCII字符集。
(1)查看服务器端字符集
通过客户端或服务器端的sql*plus登录ORACLE的一个合法用户,执行下列SQL语句:
SQL > select * from V$NLS_PARAMETERS
parameter value
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
…. ….
NLS_CHARACTERSET US7ASCII
NLS_SORT BINARY
NLS_NCHAR_CHARACTERSET US7ASCII
从上述列表信息中可看出服务器端ORACLE数据库的字符集为'US7ASCII'。
(2)按照服务器端字符集对客户端进行配置
配置方法有两种:
安装ORACLE的客户端软件时指定
在安装ORACLE的客户端产品软件时,选择与ORACLE服务端一致的字符集(本例为US7ASCII)即可。
修改注册信息的方法
根据ORACLE 客户端所选sql*net 的版本分为下列两种情况:
a. 客户端为 sql*net 2.0 以下版本
进入Windows的系统目录,编辑oracle.ini文件,用US7ASCII替换原字符集,重新启动计算机,设置生效。
b. 客户端为 sql*net 2.0 以上版本
在WIN98 下 运 行REGEDIT,第一步选HKEY_LOCAL_MACHINE,第二步选择SOFTWARE, 第三步选择 ORACLE, 第四步选择 NLS_LANG, 键 入 与服务器端相同 的 字 符 集(本例为:AMERICAN_AMERICAN.US7ASCII)。
2.2 强制加载数据字符集与服务器端字符集一致
假设要加载数据从原ORACLE数据库卸出时的字符集为US7ASCII,当前ORACLE服务器字符集为WE8ISO8859P1。
下面提供三种解决方法:
(1) 服务器端重新安装ORACLE
在重新安装ORACLE 时选择与原卸出数据一致的字符集(本例为US7ASCII)。
加载原卸出的数据。
这种情况仅仅使用于空库和具有同一种字符集的数据。
(2)强行修改服务器端ORACLE当前字符集
在用imp命令加载数据前,先在客户端用sql*plus登录system DBA用户,执行下列SQL语句进行当前ORACLE数据库字符集修改:
SQL > create database character set US7ASCII
* create database character set US7ASCII
ERROR at line 1:
ORA-01031: insufficient privileges
你会发现语句执行过程中,出现上述错误提示信息,此时不用理会,实际上ORACLE数据库的字符集已被强行修改为US7ASCII,接着用imp命令装载 数据。等数 据装载完成以后,shutdown 数据库,再startup 数据库,用合法用户登录ORACLE数据库,在sql>命令提示符下,运行select * from V$NLS_PARAMETERS,可以看到ORACLE数据库字符集已复原,这时再查看有汉字字符数据的表时,汉字已能被正确显示。
(3)利用数据格式转储,避开字符集限制
这种方法主要用于加载外来ORACLE数据库的不同字符集数据。其方法如下:
先将数据加载到具有相同字符集的服务器上,然后用转换工具卸出为foxbase 格式或access格式数据库,再用转换工具转入到不同字符集的ORACLE数据库中,这样就避免了ORACLE字符集的困扰。目前数据库格式转换的工具 很多,象powerbuilder5.0以上版本提供的pipeline,Microsoft Access数据库提供的数据导入/导出功能等。转换方法参见有关资料说明。.
2.3匹配字符集替换汉字
对于1.3提到的情况,没有很好的办法,只能先把客户端与服务器端字符集匹配一致后,根据原输入汉字的特征码替换汉字字符部分。
 


posted @ 2008-07-25 00:57 惠子 阅读(3161) | 评论 (0)编辑 收藏

 

假设我们有一个表Student,包括以下字段与数据:

drop table student;

create table student
(
id int primary key,
name nvarchar2(50) not null,
score number not null
);

insert into student values(1,'Aaron',78);
insert into student values(2,'Bill',76);
insert into student values(3,'Cindy',89);
insert into student values(4,'Damon',90);
insert into student values(5,'Ella',73);
insert into student values(6,'Frado',61);
insert into student values(7,'Gill',99);
insert into student values(8,'Hellen',56);
insert into student values(9,'Ivan',93);
insert into student values(10,'Jay',90);

commit;

  • Union和Union All的区别。

select *
from student
where id < 4

union

select *
from student
where id > 2 and id < 6

结果将是

1    Aaron    78
2    Bill    76
3    Cindy    89
4    Damon    90
5    Ella    73

如果换成Union All连接两个结果集,则返回结果是:

1    Aaron    78
2    Bill    76
3    Cindy    89
3    Cindy    89
4    Damon    90
5    Ella    73

可以看到,Union和Union All的区别之一在于对重复结果的处理。

接下来我们将两个子查询的顺序调整一下,改为

--Union

select *
from student
where id > 2 and id < 6

union

select *
from student
where id < 4

看看执行结果是否和你期望的一致?

--Union All

select *
from student
where id > 2 and id < 6

union all

select *
from student
where id < 4

那么这个呢?

据此我们可知,区别之二在于对排序的处理。Union All将按照关联的次序组织数据,而Union将进行依据一定规则进行排序。那么这个规则是?我们换个查询方式看看:

select score,id,name
from student
where id > 2 and id < 6

union

select score,id,name
from student
where id < 4

结果如下:

73    5    Ella
76    2    Bill
78    1    Aaron
89    3    Cindy
90    4    Damon

和我们预料的一致:将会按照字段的顺序进行排序。之前我们的查询是基于id,name,score的字段顺序,那么结果集将按照id优先进行排序;而现在新的字段顺序也改变了查询结果的排序。并且,是按照给定字段a,b,c...的顺序进行的order by。即结果是order by a,b,c...........的。我们看下一个查询:

select score,id,name
from student
where id > 2

union

select score,id,name
from student
where id < 4

结果如下:

56    8    Hellen
61    6    Frado
73    5    Ella
76    2    Bill
78    1    Aaron
89    3    Cindy
90    4    Damon
90    10    Jay
93    9    Ivan
99    7    Gill

可以看到,对于score相同的记录,将按照下一个字段id进行排序。如果我们想自行控制排序,是不是用order by指定就可以了呢?答案是肯定的,不过在写法上有需要注意的地方:

select score,id,name
from student
where id > 2 and id < 7

union

select score,id,name
from student
where id < 4

union

select score,id,name
from student
where id > 8
order by id desc

order by子句必须写在最后一个结果集里,并且其排序规则将改变操作后的排序结果。对于Union、Union All、Intersect、Minus都有效。

=================================================================================================================

Intersect和Minus的操作和Union基本一致,这里一起总结一下:

Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

Union All,对两个结果集进行并集操作,包括重复行不进行排序

Intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

Minus,对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。

可以在最后一个结果集中指定Order by子句改变排序方式。

posted @ 2008-07-25 00:51 惠子 阅读(662) | 评论 (1)编辑 收藏
     摘要:   阅读全文
posted @ 2008-03-24 11:09 惠子 阅读(1671) | 评论 (0)编辑 收藏
仅列出标题  下一页

<2017年8月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜