FORM开发知识1(网上找到的)
P.S http://slim119.itpub.net/post/2106/283317[@more@]一、处理错误1.当错误出现在Oracle Form PL/SQL中时,处理的方法如下:IF (err_condition) THENFnd_message.set_name(appl_short_name,message_name);Fnd_message.error;RAISE form_trigger_failure;END IF;2.当错误出现在Stored Procedure中时,处理的方法如下:IF (err_condition) THENFnd_message.set_name(appl_short_name,message_name);App_exception.raise_exception;END IF;3.当我们在测试FORM_SUCCESS,FORM_FAILURE和FORM_FATAL的时候,可能触发了目地的子程序而导至它
对齐!
一直,以来对FORM 中对齐方式的“堆叠”和“分布",不太清楚怎么用,今天一同事,指点一下,豁然开朗!堆叠:水平选“堆叠”,垂直选“顶部对齐”;节省了不少时间![@more@]
1015FORM
P.S http://www.trypub.com/thread-358-1-1.html[@more@]form 总结:1.一进页面就能看到表中已生成数据,而不用按ctrl+f11进行查询的语句:在form级的触发器when-new-form-instance中,写如下代码: go_block('XXXX');execute_query; 要查询的数据块的名称 说明:当使用基于表建立的块时,可使用块里的任何项的GO_BLOCK或者GO_ITEM找到那个块当查询数据到一个块里去,可通过execute_query进行处理2.如何实现当用户输入一条记录生效后,准备输入第二条新记录时,你要自动保存前一条输入的记录。并且防止客户重复插入数据:a)自动保存在参
Oracle Report学习- -
Oracle Report学习- -[@more@]1. 在Report中建立data link有三种类型:Create a Query to Query Link Create a Group to Group Link Create a Column to Column Link 2. 定义多查询组 首先创建两个查询。 在两个查询的列之间建立Data Link。 选择报表样式为上面分组。 在布局模型下的重复框架的属性中,可以设置“每页最大记录数”来设定每页显示的记录。3. 定义矩阵报表 首先先建立查询。 然后,从建立的组中,拖出两列,分成两个独立的组。 接着,选在a*b工具,将新建立的分组框起来,建立为新的分组。 最后,运行报表向
学习Oracle Form的一点笔记- -
学习Oracle Form的一点笔记- -[@more@]培养计划中还要掌握Form的开发,本以为就是Report稍微变更了一下,或者VB关联上数据库,但是实际却不是那么回事,很是不习惯。今天陆陆续续看了一些资料,零零碎碎的记了一些笔记,还是心中没底。1、将相关项目组织成为功能单位。无物理表示方式,两种类型——数据块(与表或者视图相关)控制块。2、在数据块中新建Item,默认与数据库相关,可以在属性数据库设置中可以设定不相关,同时可以在一般属性中设定这个Item的类型,是文本还是按钮等。在物理属性中设定这个Item属于哪个Canvas。3、复制对象的
from4!
from4![@more@]1. 对象组 将数据块加入对象组,数据中的项、触发器、关系等不在对象组中显示。 只有顶级对象才能包含在对象组中。所以不能将items, item-level triggers, block-level triggers, relations不能包含在对象组中。 一个组中的对象必须在同一个模块中定义。 对象组不能包含其他对象组。 组中的对象别删除时,组也被删除。 删除组时,同时删除其中的对象。 对象组中并不拷贝对象,而只是保留指向对象的指针(子类化的组除外)。2. 对象库 将对象拖入对象库,则创建了一个新版本的对象。 将这个对象设置为Smar
设定报表的参数
1)设定报表参数的时候,可以设定属于哪一个值集,这样在用户运行报表的时候就可以对用户输入的参数进行一个校验。2)同时可以为参数设定一个默认值,这个默认值可以是基于SQL的、弹性域等等。例如可以当前登录系统的用户作为参数的默认值。其SQL语句为:SELECT full_name FROM per_people_f WHERE person_id = (SELECT employee_id FROM fnd_user WHERE user_id = :$PROFILES$.USER_ID)。在这里就应用了系统登录的用户ID,查找出用户的全名。[@more@]
FORM2!
FORM2![@more@]1、基于过程的块在包头中说明的过程,在包体中一定要定义,定义必须连参数的名称也必须一至。在使用过程(procedure)建立数据块的时候,在包中分别建立查询、插入、更新、删除、锁定5个过程。用来操作数据。其中,查询的IN OUT的参数为REF CURSOR类型,而对表单记录的DML和加锁语句,IN OUT的参数为TABLE类型。例子:下面就是一个包中对记录进行查询和插入。包头:create or replace package test_emp_maint is -- Public type declarations TYPE emp_t IS RECORD( id test02.id%TYPE, name test02.name%TYP
FORM!
FORM![@more@]1. 子程序的作用范围 1.1在表单模块中的用户定义的子程序只能从触发器或者同模块中的其他子程序调用。 1.2在菜单模块中定义的子程序只能在菜单命令中调用。 1.3在库模块中的子程序能够别任何触发器或者菜单命令调用,如果这个类图attached表单或者菜单模块。2. 定义参数 数据类型,函数的参数为VARCHAR2, DATE, NUMBER, or BOOLEAN 或者Form Builder对象类型。过程的参数类型为有效的PL/SQL类型。 参数模式:IN/OUT/IN OUT,注意参数是否可写。在使用OUT/IN OUT时,参数总是被赋值,即使在程序中没有显示赋值。
tree
p.s http://www.itpub.net/858473.html[@more@]现讲述我所测试出的一种显示树的简单方法,步骤如下:1.向画布中拖入一个树控件,将树命名为test_tree,将test_tree所在的block命名为tree_block.2.建立一个record_group,命名为test_tree_group.前提:存在一张具有父子结构的表.技术:利用树的查询语句(connect by…prior…start with…)原则: select 后面的字段列表必须满足以下特定格式:select 1,--这个位置的值表示树显示出来后的初始状态(1 表示展开,-1 表收缩,其它值表示叶节点)level,--节点所在层数menu_name,--显示文本NULL,--显示在节点
About Tuning the SQL clause!
I don't think I konw how to tuning the SQL clause,and the following is a example ,and in the future ,I will add more![@more@]--Before we see the example,I will first declare sth about the --table A and B;--A.column1 don't have a index--B.column2 is the primark key of table B--1SELECT * FROM A,BWHERE A.column1=B.column2--2SELECT * FROM A,BWHERE B.column2=A.column1--3SELECT * FROM A,BWHERE SUBSTR(B.column2,1,2)=A.column1--Frankly speaking ,I am nou quite sure about the method to --see the time for
Explain Plan中AUTOTRACE引起的SP2-0618和SP2-0611错误
P.S: http://www.erp100.com/html/43/2743-2292.html[@more@]今天测试Explain Plan功能碰到了这样的错误:SQL> set autotrace onSP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabledSP2-0611: Error enabling STATISTICS report查阅了一下相关资料,set autotrace可能导致的错误有:SP2-0613: Unable to verify PLAN_TABLE format or existence 无法验证 PLAN_TABLE 格式或实体SP2-0611: Error enabling EXPLAIN report 启用EXPLAIN报告时出现错误SP2-0618: Cannot find the Session Iden
The concept of Left join & Right join!
Frankly speaking , I don't really know the difference between left join and right join! the following will give us a clearly concept ! [@more@]--Right joinSELECT emp_name, dept_name FORM Employee, Department WHERE Employee.emp_deptid(+) = Department.deptid此SQL文使用了右连接,即“(+)”所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,无论其在左侧是否得到匹配,也就是说上例中无论会不会出现某个部门没有一个员工的情况,这个部门的名字都会在查询结果中出现。--Left join
A example for Dynamic SQL!
A example for Dynamic SQL I saw in a book![@more@]--首先,根据用户输入的表名及字段名等参数动态建表,并进行编译CREATE OR REPLACE PROCEDURE emp_e ( table_name in varchar2 ,ziduana in varchar2 ,datatypea in varchar2 ,ziduanb in varchar2 ,datatypeb in varchar2 )AS str_sql varchar2(500);BEGIN str_sql := 'create table'||table_name||'('||ziduana||' '||datatypea||','||ziduanb||' '||datatypeb||')'; EXECUTE IMMEDIATE str_sql;EXECEPTION WHEN OTHERS THEN NULL;END;--然
A example for decode;
I don't remember the web site ,the following is from a web site ,thank for the author![@more@]DECODE(E1, E2, E3, E4) IF E1 = E2 THEN E3 ELSE E4 SELECT SUM(DECODE(TO_CHAR (order_dt, 'DAY'), 'SUNDAY ', sale_price, 0)) SUN, SUM(DECODE(TO_CHAR (order_dt, 'DAY'), 'MONDAY ', sale_price, 0)) MON, SUM(DECODE(TO_CHAR (order_dt, 'DAY'), 'TUESDAY ', sale_price, 0)) TUE, SUM(DECODE(TO_CHAR (order_dt, 'DAY'), 'WEDNESDAY', sale_price, 0)) WED, SUM(DECODE(TO_CHAR (order_dt, 'DAY'), 'THURSDAY ', sale
How to use the
The following will show you how to use the explain plan:[@more@]--通过以下方法可以把Autotrace的权限授予Everyone,--如果你需要限制Autotrace权限,可以把对public的授权改为对特定user的授权。 connect sys as sysdba@E:oracle10.2.0db_1RDBMSADMINutlxplan--create public synonym plan_table for plan_table;grant all on plan_table to public ;@E:oracle10.2.0db_1sqlplusadminplustrce/*drop role plustrace;create role plustrace;grant select on v_$sesstat to plustrace;grant select on v_$statname to plustrace;grant
How to copy a table from the remote database!
The following is showing how to copy a table from a remote database:[@more@]First ,you should use an exsited user or create a new user,and grant create database link priveledge to the user: CREATE USER JRZBIDENTIFIED BY JRZBDEFAULT TABLESPACE USERSTEMPORARY TABLESPACE TEMPQUOTA 50M ON USERSACCOUNT UNLOCK;----GRANT SYSDBA TO Test_Eric;--DESC DBA_TAB_PRIVS;--SELECT PRIVILEGE FROM DBA_SYS_PRIVS-- WHERE GRANTEE='JRZB';GRANT ALTER SYSTEM TO JRZB;GRANT ALTER DATABASE TO JRZB;GRANT CREATE SESSION TO JR
CREATE USER!
You can see how to create a user;[@more@]CREATE USER Test_EricIDENTIFIED BY ERICDEFAULT TABLESPACE USERSTEMPORARY TABLESPACE TEMPQUOTA 5M ON USERSACCOUNT UNLOCK;----GRANT SYSDBA TO Test_Eric;--DESC DBA_TAB_PRIVS;--SELECT PRIVILEGE FROM DBA_SYS_PRIVS-- WHERE GRANTEE='JRZB';GRANT ALTER SYSTEM TO Test_Eric;GRANT ALTER DATABASE TO Test_Eric;GRANT CREATE SESSION TO Test_Eric;GRANT CREATE TABLE TO Test_Eric;GRANT ALTER ANY TABLE TO Test_Eric;
SET NULL & CASCADE;
A example about SET NULL & CASCADE;[@more@]--SET NULL 首先创建两个表,父表为DEPTS,子表为EMPS,如果删除父表中的DEPARTMENT_NUM行,则EMPS表的DEPARTMENT_NUM行会自动设置为NULL; CREATE TABLE DEPTS ( DEPARTMENT_NUM NUMBER(5) PRIMARY KEY, DEPARTMENT_NAME VARCHAR2(20) ); CREATE TABLE EMPS ( EMPLOYEE_NAME VARCHAR2(20), DEPARTMENT_NUM NUMBER(5) REFERENCES DEPTS(DEPARTMENT_NUM) ON DELETE SET NULL ) --CASCADE 父表为DEPTS,子表为EMPS,如果删除父
About NULL;
P.S http://blogger.org.cn/blog/more.asp?name=blakestone&id=8555[@more@]软件环境: 1、Windows NT4.0+ORACLE 8.0.4 2、ORACLE安装路径为:C:ORANT 含义解释: 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零。 ORACLE允许任何一种数据类型的字段为空,除了以下两种情况: 1、主键字段(primary key), 2、定义时已经加了NOT NULL限制条件的字段 说明: 1、等价于没有任何值、是未知数。 2、NULL与0、空字符串、空格都不同。 3、对空值做