广

oracle数据库

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    ORACLE应用经验(1)

    2018-04-16 10:57:28 次阅读 稿源:互联网
    广告
    全网推广平台,软文发布
    正在看的ORACLE教程是: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
    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

    [1] [2] [3] 下一页

    正在看的ORACLE教程是:ORACLE应用经验(1)。_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
    ***********************************************************************
    ***********************************************************************
    ---游标的属性
    (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

    上一页  [1] [2] [3] 下一页

    正在看的ORACLE教程是:ORACLE应用经验(1)。 .....
    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 当数字的,数据转换,截字符串或强制性的错误时
    WHEN VALUE_ERROR THEN
    **************************************************************************
    **************************************************************************
    --常用TEXT_IO
    Delcare
    out_file text_io.file_type;
    Begin
    out_file:=text_io.fopen(prn,w);
    text_io.new_line(out_file, );
    text_io.put_line(out_file, )
    text_io.fclose(out_file);
    End;
    ---文本输入输出
    TEXT_IO
    TEXT_IO PACKAGE
    TEXT_IO FCLOSE
    TEXT_IO.FILE_TYPE
    TEXT_IO.FOPEN
    TEXT_IO.IS_OPEN
    TEXT_IO.GET_LINE
    TEXT_IO.NEW_LINE
    TEXT_IO.PUT
    TEXT_IO.PUTF
    TEXT_IO.PUT_LINE
    USING TEXT_IO CONSTRUCTS
    ----------------------------
    Declare
    Out_file Text_io.file_type;
    L Varchar2(100);
    L1 Varchar2(100);
    L2 Varchar2(100);
    Begin
    Out_file :=text_io.fopen(c:/ll/login.txt,r);
    If text_io.is_open(Out_file) then
    text_io.get_line(Out_file,L);
    text_io.get_line(Out_file,L1);
    text_io.get_line(Out_file,L2);
    Else
    Null;
    End if;
    End;
    ---清除全局变量
    erase(global.var_name);
    ---隐藏WINDOW,VIEW,MENU
    HIDE_WINDOW|VIEW|MENU(WINDOW|VIEW|MENU_name);
    --- 增加参数add_parameter
    Declare
    pl_id ParamList;
    BEGIN
    pl_id:=Get_Parameter_List(tempdata);
    IF NOT Id_Null(pl_id) THEN
    Destroy_Parameter_List(pl_id);
    END IF;
    pl_id:=Create_Parameter_List(tempdata);
    Add_Parameter(pl_id,EMP_QUERY,DATA_PARAMETER,EMP_RECS);
    Run_Product(REPORTS,empreport,SYNCHRONOUS,RUNTIME,
    FILESYSTEM,pl_id,NULL);
    END;
    ---
    DECLARE
    lArgs OLE2.LIST_TYPE;
    BEGIN
    word.hApp:=OLE2.CREATE_OBJ(Word.Basic);
    lArgs:=OLE2.CREATE_ARGLIST;
    OLE2.ADD_ARG(lArgs,:ole.word_doc);
    OLE2.INVOKE(Word.hApp,fileopen,lArgs);
    OLE2.DESTROY_ARGLIST(lArgs);
    END;
    ***********************删除重复记录**************
    Delete from emp e
    where e.rowid >
    (select min(f.rowid) from emp f
    4 where f.empno=e.empno);

    上一页  [1] [2] [3] 

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告
    广告