ORACLE应用经验(1)[转载]

ORACLE应用经验(1)
JAN-1(January) FEB-2(February) MAR-3(March)
APR-4(April) MAY-5(May) JUN-6(June)
JUL-7(July) AUG-8(August) SEP-9(September)
OCT-10(October)NOV-11(November)DEC-12(December)
********************************************************************
****************************常用设置********************************
---on-log 触发器编写示范
Declare
flag varchar2(80):=null;
cou number:=1;
n number;
Begin
Loop
 logon(USERNAME,PASSWORD||'@'||CONNECT,PROPERTY_FALSE....);
 flag:=Get_Application_Property(DATASOURCE);
 Exit when cou>8 or flag='ORACLE';
 cou:=cou+1;
End Loop;
If flag<>'ORACLE' then
 set_alert_property('a_1',alert_message_text,
 '登录失败,请返回重试');
n:=show_alert('a_1');
 raise form_trigger_failure; --中断 FORM
End if;
End;
---对基表执行查询(只对基表)
 Set_Block_Property('Block_Name',Default_Where,'where ......');
 Go_Block('Block_Name');
 Execute_Query;
 ***************************************************
变量:
 局部变量;
 全局变量--------------1.:block.item
  2.:parameter.v_name
  3.:global.V_name
 
***************************************************
---同步发生显示
 synchronize; 
---实施'TRIGGER'触发
 EXECUTE_TRIGGER(TRIGGER_NAME);
---清除模块
 clear_block(NO_VALIDATE);'NO_VALIDATE'不生效
--建立警告栏并由警告栏选择
Declare
 n number;
Begin
 Set_Alert_Property('Alert_Name',Alert_Message_Text,'message');
 n:=Show_Alert('Alert_Name');
 If n=Alert_Button1 then
 ...; 
ElsIf n=Alert_Button2 then 
...;
 End if;
End;
---WINDOW设置
--运行时最大化,最小化
Set_Window_Property(FORMS_MDI_WINDOW, WINDOW_STATE, MAXIMIZE|MINIMIZE);
--WINDOW标题
Set_Window_Property(FORMS_MDI_WINDOW, title,'TEXT');
--退出是否为真
Set_Window_Property(FORMS_MDI_WINDOW, REMOVE_ON_EXIT,PROPERTY_FALSE|TRUE);
---设置系统提示信息等级
:System.Message_Level:= '5|10|15|20'; 
---设置ITEM属性
--设置ITEM属性ENABLED
Set_Item_Property('Block_name.Item_name',ENABLED,PROPERTY_TRUE|FALSE);
--设置ITEM属性NAVIGABLE
Set_Item_Property('Block_name.Item_name',NAVIGABLE,PROPERTY_TRUE|FALSE);
--设置ITEM属性VISUAL_ATTRIBUTE
Set_Item_Property('Block_name.Item_name',visual_attribute,'vname'); 
--'vname'由导航器中(VISUAL_ATTRIBUTES)定义
--设置ITEM属性DISPLAYED
Set_Item_Property('Block_name.Item_name',displayed,TRUE|FALSE);
--设置ITEM属性POSITION
Set_Item_Property('Block_name.Item_name',position,x,y);
--设置ITEM_SIZE
Set_Item_Property('Block_name.Item_name',item_size,x,y);
--设置ITEM属性LABLE
Set_Item_Property('Block_name.Item_name',LABEL,'MESSAGE')
---设置LIST ITEM示范
Declare
nnumber;
Begin
 clear_list('b1.fkfs');
 m:=populate_group('fkfs');
 populate_list('b1.fkfs','fkfs');
/*
 其中FKFS  record group ;
*/
End;
---增加'LIST ITEM'
 Add_List_Element(list_name, list_index, list_label, list_value);
 Add_List_Element(list_id, list_index, list_label, list_value);
---删除'LIST ITEM'
 Delete_List_Element(list_name, list_index);
 Delete_List_Element(list_id, list_index);
 :
 BEGIN 
Delete_List_Element('years',1); 
Add_List_Element('years', 1, '1994', '1994'); 
END; 
---获得'LIST ITEM'项的组成
 1.获得'LIST ITEM'的总和 
GET_LIST_ELEMENT_COUNT(list_id);
 GET_LIST_ELEMENT_COUNT(list_name); 
2.获得'LIST ITEM'的标签
 GET_LIST_ELEMENT_LABEL(list_id, list_name, list_index); 
GET_LIST_ELEMENT_LABEL(list_name, list_index);
 
3.获得'LIST ITEM'的值
 GET_LIST_ELEMENT_VALUE(list_id, list_index); 
GET_LIST_ELEMENT_VALUE(list_name, list_index);
---设置'时间'
DECLARE 
timer_id Timer; 
one_minute NUMBER(5) := 60000; 
BEGIN 
timer_id := CREATE_TIMER('emp_timer', one_minute, REPEAT|NO_REPEAT); 
END;
---产生一个'EDITER'
DECLARE 
ed_idEditor; 
status BOOLEAN; 
BEGIN 
ed_id:=Find_Editor('edit_name'); ---'edit_name'导航器定义
IF NOT Id_Null(ed_id) THEN 
Show_Editor(ed_id, NULL, :block_name.item_name, status);
ELSE 
Message('Editor "Happy_Edit_Window" not found'); 
RAISE Form_Trigger_Failure; 
END IF; 
END; 
----产生一个'LOV'
DECLARE 
lv_idLOV; 
status BOOLEAN; 
BEGIN 
lv_id := Find_LOV('lov_name'); ---'lov_name' 由导航器定义
--IF Id_Null(lv_id) THEN 
-- lv_id := Find_LOV('lov_name1'); ---'lov_name1' 由导航器定义
--END IF; 
status := Show_LOV(lv_id,10,20); 
END; 
---定义一个'EXCEPTION'例外
Declare
err_1 exception;
Begin
If ...then
 Raise err-1;
End if;
Exception
 When err_1 then
 ....
END;
---设置应用特性(光标类型)
 SET_APPLICATION_PROPERTY(CURSOR_STYLE,
 'CROSSHAIR'|'BUSY'|'HELP'|'DEFAULT'|'INSERTION');
 
*********************************************************************** 
**********************************函数*********************************
---把字符串的字符变成全大写(UPPER)全小写(LOWER)第一个字母大写(INITCAP)
 UPPER|LOWER|INITCAP(STRING)
---在文件的左('LPAD')('RPAD')粘贴字符
 LPAD|RPAD(STRING,LENGTH,'SET')"LENGTH"为总字符长"SET"为粘贴字符
---在文件的左('LTRIM')('RTRIM')删除字符
 LTRIM|RTRIM(SRTING,'SET') "SET"为待删除字符
---找出'字符集'在字符串中的位置
INSTR('STRING','SET',N,M)'STRING'中找出'SET''N'位起第'M'
---数的绝对值
 ABS(VALUE)
---'MOD'
 MOD(VALUE,除数) 返回'除数''VALUE'的余数常用判断'VALUE'是否为整数 
---'VALUE''N'位四舍五入'ROUND'或从'N'位截断'TRUNC'
 ROUND|TRUNC(VALUE,N)
---返回'VALUE'的符号
 SIGN(VALUE)
 
---列表的最大值
 GREATEST(N1,N1...);
 列表的最小值
 LEAST(N1,N1...);
---返回小于或等于数的最大整数
 FLOOR(VALUE) floor(1.3)=1floor(-1.3)=-2
---返回大于或等于数的最小整数
 CEIL(VALUE) cell (1.3)=2cell (-1.3)=-1
---取字符串长度
 substr(string,start,number)numberstring长度,startstring起点
 
---DECODE函数,多重(if,then,else)
 decode(value,if1,then1,if2,then2,.....,else)
---判断'VALUE'是否为空(空值替换)
 NVL(UALUE,'WKFHZ')'WKFHZ'是为空返回值,不为空则为原值
---字段长度
 length(:block_name.item_id)
---返回字符串的第一(最左)个字符的ascII
 ascII(string)
---多行'VALUE' (作用于多'')
 AVG(VALUE)平均值
 COUNT(VALUE)行数
 MAX(VALUE)最大值
 MIN(VALUE)最小值
 SUM(VALUE)
---字符转换
 TRANSLATE(STRING,'待转字符','转换字符');
 TEANSLATE('AAABBB','AB','BA')返回'BBBAAA'
 
---比较单行中多个列的值获得最大('GREATEST'最小('LEAST')
 GREATEST|LEAST(列名,列名,...)
---按表达式或位置排序
ORDER BY '表达式'OR'位置' ASC|DESCASC'',DESC'' 默认'ASC' 
***********************************************************************
***********************************************************************
---游标的属性
 (1) %ISOPEN打开属性布尔型打开为TRUE 
判断'光标'是否打开如未打开则打开'光标'
 IF NOT(CORSOR_NAME%ISOPEN) THEN
 OPEN CORSOR_NAME;
 END IF;
 FETCH CORSOR_NAME INTO ...
 (2) %NOTFOUND 布尔型最近一次'FETCH'返回无结果则为TRUE
 OPEN CORSOR_NAME;
 LOOP
 FETCH CORSOR_NAME INTO ... 
EXIT WHEN CORSOR_NAEM%NOTFOUND;
 END LOOP;
 (3) %FOUND 布尔型最近一次'FETCH'返回无结果则为FALSE
 OPEN CORSOR_NAME;
 
WHILE CORSOR_NAME%FOUND LOOP
 ......
 FETCH CORSOR_NAME INTO ... 
END LOOP;
 CLOSE CORSOR_NAME; 
(4) %ROWCOUNT NUMVER为游标取出的行数
 OPEN CORSOR_NAME;
 LOOP
 FETCH CORSOR_NAME INTO ... 
EXIT WHEN CORSOR_NAME%ROWCOUNT>5; 
...... 
END LOOP; 
CLOSE CORSOR_NAME; 
---循环语句
 (1)基本循环
 LOOP 
.....
 EXIT WHILE; (EXIT WHEN X>100)
 END LOOP;
 (2)WHILE循环
WHILE ( WHEN X>100) LOOP
 .....
 END LOOP;
 (3)数值型FOR循环'X'为计数器
FOR X IN (第减值) Y..Z LOOP
 .....
 END LOOP;
 (4)游标FOR循环
 
---Exception(例外)在最近的'BEGIN''END'之间
 Exception
 语法1 '没有数据找到'
 when no_data_found then 
语法2 '发生任何错误'
 when others then 
语法3 '发现多行'
 WHEN TOO_MANY_ROWS THEN
语法4 '字符向数字转换失败'
 WHEN INVALID_NUMBER THEN 
语法5 '被零除'
 WHEN ZERO_DIVIDE THEN 
语法6 '向唯一索引中插入重复数据'
 WHEN DUP_VAL_ON_INDEX THEN
 语法7 '非法游标操作'
 WHEN INVALID_CURSOR THEN
 语法8 '数字的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值