Oracle存储过程

    xiaoxiao2021-03-25  42

    一、存储过程创建语句:

    CREATE OR REPLACE PROCEDURE 存储过程名 ( 变量1 IN 数据类型, -- 详解见① 变量2 OUT 数据类型 ) IS/AS -- 变量声明块:IS或者AS用于声明变量 参数1 数据类型(值范围); 参数2 数据类型(值范围); BEGIN -- 过程语句块:begin开始为PL/SQL体 PL/SQL体; EXCEPTION -- 异常处理块:exception开始处理出现的异常。可选 WHEN OTHERS THEN ROLLBACK; RAISE; -- 抛出异常。在过程语句块中抛出用:raise+异常名 END;

    参数

     * 参数可以有,也可以没有。

    * 参数只需声明数据类型,无需声明长度。长度有外部调用者决定。

    * 参数传递方式有三种:IN,OUT,IN OUT。若未声明参数传递方式,默认IN。

    (1)IN。

    IN表示传入参数(值传递)并且IN参数在存储过程中不允许重新赋值。否则编译提示以下错误:

    错误:PLS-00363: expression 'V_PARA1' cannot be used as an assignment target

    (2)OUT。

    OUT表示传出参数(引用传递)OUT型变量无法在被调用前赋值,即使在被存储过程调用前对其赋值,其本身也是个空值。

    (3)IN OUT。

    IN OUT即可做传入参数,也可做传出参数(真正的按引用传递参数)。

    二、语法

    1. 变量赋值

    v_test  := 123;

    2. SELECT ... INTO ...

    将查询结果赋值给变量。可以同时将多个列的查询结果赋值给多个变量,但是必须保证有且仅有一条数据,否则抛出异常。

    3. if判断

    if 条件 then 

    begin 

    函数体;

    end;

    end if;

    create or replace procedure PRO_TEST ( x varchar ) is v_para varchar2(10); begin v_para1 := 0; if x>0 then begin v_para1 := v_para1+x; end; elsif x=0 then begin v_para1 := x; end; else begin v_para1 := v_para1-x; end; end if; dbms_output.put_line(v_para1); end; 4. while循环

    while 条件 loop

    begin

    函数体;

    end;

    end loop;

    create or replace procedure test_pro is v_para1 varchar2(20); begin v_para1 := 0; while v_para1<4 loop v_para1 := v_para1+1; end loop; dbms_output.put_line(v_para1); end;

    5. for循环

    for 变量 in 游标名 loop

    begin

    函数体;

    end;

    end;

    Oracle的数据类型:

    1.字符串类型

    (1)固定长度(未达到指定长度补空格,未指定长度默认为1):char、nchar(Unicode编码)

    (2)可变长度(未达到指定长度补空格,不可以不指定长度):varchar2、nvarchar2(Unicode编码)

    2.数字类型

    NUMBER(p,s)p为整数长度,s为小数长度。

    INTEGER  整数

    BINARY_FLOAT  单浮点

    BINARY_DOUBLE 双浮点、

    FLOAT(N)  浮点数,N为精度

    3.日期类型

    DATE

    TIMESTAMP

    转载请注明原文地址: https://ju.6miu.com/read-300087.html

    最新回复(0)