orcale 存储过程学习

1、生成语句

 create [or replace] procedure <过程名>

    (

    <参数1> [方式1] <数据类型1>,

    <参数2> [方式2] <数据类型2>

    )

    is|as

    PS/SQL过程体;


2、

into:赋值
is|as 此处无区别
参数: in传入, out输出


3、

%TYPE: %TYPE用来声明一个变量和指定表的column一样的数据类型
%ROWTYPE: %ROWTYPE用来声明一个和表中记录一样的record.


4、pl/sql三种循环

set serveroutput on;
declare
i number;
begin
    --正序循环
    for i in 1..5 loop
        DBMS_OUTPUT.PUT_LINE('正序for:i='||i);
    end loop;
    --倒序循环
    for i in reverse 1..5 loop
        DBMS_OUTPUT.PUT_LINE('倒序for:i='||i);
    end loop;
    --while循环
    i:=0;
    while i<5 loop
        i:=i+1;
        DBMS_OUTPUT.PUT_LINE('while:i='||i);
    end loop;
    --loop循环
    i:=0;
    loop
        DBMS_OUTPUT.PUT_LINE('loop:i='||i);
    i:=i+1;
    exit when (i>=5);
    end loop;
end;


5. case...when

  1)case  变量

        when   'a'  then

         when   'b'  then

        else

      end case

  2)case

          when  条件1  then

           when   条件2  then

          else

        end case


6、record用法

SET SERVEROUTPUT ON;

DECLARE
   TYPE type_record IS RECORD
   (
      name1   VARCHAR (20):= 'world',
      age     NUMBER:= 20
   );

   v_type_record   type_record;
BEGIN
   v_type_record.name1 := 'hello';
   v_type_record.age := 15;
   DBMS_OUTPUT.put_line (v_type_record.name1 || ' ' || v_type_record.age);
END;



7、exception异常

set serveroutput on;
declare
 v_school B_W_XXWH%rowtype;
 begin
    
    DBMS_OUTPUT.PUT_LINE(1/0);
    
    EXCEPTION
    WHEN no_data_found then
        DBMS_OUTPUT.PUT_LINE('没有数据'||sqlerrm || sqlcode);
    when others then
    begin
        DBMS_OUTPUT.PUT_LINE('未知错误');    
    end;
 end;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章