Oracle存储过程

一、存储过程创建语句:

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值