zoukankan      html  css  js  c++  java
  • orcale存储过程学习之路--存储过程实例(三)

    --创建表

    create table TESTTABLE
    (
      id1  VARCHAR2(12),
      name VARCHAR2(32)
    )
    select t.id1,t.name from TESTTABLE t


    insert into TESTTABLE (ID1, NAME)
    values ('1', 'zhangsan');

    insert into TESTTABLE (ID1, NAME)
    values ('2', 'lisi');

    insert into TESTTABLE (ID1, NAME)
    values ('3', 'wangwu');

    insert into TESTTABLE (ID1, NAME)
    values ('4', 'xiaoliu');

    insert into TESTTABLE (ID1, NAME)
    values ('5', 'laowu');

    //-------------------------  声明部分  ---------------------------

    create or replace package PRO_TEST_TESTTABLE is
    PROCEDURE Test_Count;
    PROCEDURE Test_Pra(Name IN varchar2);
    PROCEDURE Test_Cursor;
    PROCEDURE Test_Case;
    PROCEDURE Test_Loop;
    PROCEDURE Test_Cursor_Loop;
    PROCEDURE Test_Error(isOk in varchar2);
    PROCEDURE Test_Exception(isOk in varchar2);
    end PRO_TEST_TESTTABLE;

    //-------------------------  body部分  ---------------------------

    create or replace package body PRO_TEST_TESTTABLE IS
    PROCEDURE Test_Count IS
    v_total number(1);
    begin
    select count(*) into v_total from TESTTABLE;
    DBMS_OUTPUT.put_line('总人数:'||v_total);
    end test_count;

    PROCEDURE Test_Pra(Name IN varchar2)IS
    begin
    null;
    end Test_Pra;
    -- 关于 游标 if,for 的例子
    PROCEDURE Test_Cursor IS
    cursor var_c is select * from TESTTABLE;
    BEGIN
    for temp in var_c loop
    if temp.name = 'lisi' then
    dbms_output.put_line('name----- '||temp.name);
    elsif temp.name = 'zhangsan' then
    dbms_output.put_line('name----- '||temp.name);
    else
    dbms_output.put_line('------name------ ');
    end if;
    end loop;
    NULL;
    END Test_Cursor;
    -- 关于 Case的例子
    PROCEDURE Test_Case IS
    cursor var_c is select * from TESTTABLE;
    BEGIN
    for temp in var_c loop
    case
    when 'zhangsan'= temp.name then
    dbms_output.put_line(temp.name);
    when 'zhangsan'= temp.name then
    dbms_output.put_line(temp.name);
    else
    dbms_output.put_line('--------------'||temp.name);
    end case ;
    end loop;
    END Test_Case;
    -- 关于 Loop的例子
    PROCEDURE Test_Loop IS
    sum1 number := 0;
    temp number :=0 ;
    begin
    loop
    exit when temp >= 2 ;
    sum1 := sum1+temp;
    temp := temp +1;
    end loop;
    dbms_output.put_line(sum1 );
    END Test_Loop;
    PROCEDURE Test_Cursor_Loop IS
    cursor var_cur is select * from TESTTABLE;
    stu_name varchar2(100);
    T TESTTABLE%rowtype;
    begin
    open var_cur;
    loop
    fetch var_cur into T;
    exit when var_cur%notfound;
    dbms_output.put_line(T.name);
    end loop;
    close var_cur;
    END Test_Cursor_Loop;
    ---关于异常处理的例子2
    PROCEDURE Test_Error(isOk in varchar2) IS
    error EXCEPTION;
    BEGIN
    if isOk = 'OK' then
    insert into TESTTABLE (id1,name) values ('1',isOk);
    elsif isOk = 'NO' then
    insert into TESTTABLE (id1,name) values ('2',isOk);
    raise error;
    else
    Dbms_Output.put_line('isOk' || isOk);
    end if;
    commit;
    exception
    when error then
    rollback;
    Dbms_Output.put_line('ERRO');
    END Test_Error;
    ---关于异常处理的例子1
    PROCEDURE Test_Exception(isOk in varchar2) IS
    Temp varchar2(12);
    BEGIN
    select name into Temp from TESTTABLE where name = isOk;
    dbms_output.put_line(Temp);
    exception
    when no_data_found
    then
    dbms_output.put_line('try');
    when TOO_MANY_ROWS
    then
    dbms_output.put_line('more');
    END Test_Exception;
    end PRO_TEST_TESTTABLE;

  • 相关阅读:
    《人月神话》-读后感2
    自主开发(二)
    自主开发(一)
    《人月神话》-读后感1
    公文流转系统—登录界面
    文件与流课堂实践
    Intern Day22
    Intern Day22
    Intern Day21
    计蒜客T1746
  • 原文地址:https://www.cnblogs.com/kongxc/p/9229550.html
Copyright © 2011-2022 走看看