您的位置:首页 > 数据库 > Oracle

ORACLE 应用经验(1)

2012-07-20 11:12 351 查看
****************************常用设置********************************

  ---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

  n number;

  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_id Editor;

  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_id LOV;

  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)=1 floor(-1.3)=-2

  ---返回大于或等于数的最小整数

  CEIL(VALUE) cell (1.3)=2 cell (-1.3)=-1

  

  ---取字符串长度

  substr(string,start,number) number为string长度,start为string起点

  

  

  ---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|DESC ASC'升',DESC'降' 默认'ASC'

  ***********************************************************************
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: