Oracle语法温故(for循环、while循环、if else 、方法声明、调用,过程方法声明、调用)

     从下面这个例子中可以看出PL/SQL语法的一般规则:
 1. PL/SQL中语句以分号(;)结尾;
 2. 开始程序块的PL/SQL语句(如IF…或BEGIN语句)没有分句;
 3. 文本值括在单引号(‘ ‘)内,而不是(“ “);
 4. 过程只允许最后有一个出口;
 5. PL/SQL程序可以分为三个部分;
 6. DECLARE部分用于变量、常量、函数、过程、Cursor;
 7. BEGIN部分包含PL/SQL块中要执行的代码 用于程序处理,其中可以调用函数、过程;
 8. Exception 部分用于出错处理。

例1:

declare
i number:=0;          /*声明变量井给初值*/
t number:=1;
-- 另一种方式初始化赋值
-- i2 number default 0; 
-- t2 number default 1;
-- 初始化常量
-- i3 constant number := 0;
-- i4 constant number := 1;
error_message exception;  /*声明一个出错处理*/
begin
  for t in 1..100 loop
    i:=i+t;
    DBMS_OUTPUT.PUT_LINE(i);
  end loop;
  if i>5050 then
    --raise error_message;  /*引发错误处理*/ 
    DBMS_OUTPUT.PUT_LINE('i变量大于'||i);
  elsif i<5050 then
    DBMS_OUTPUT.PUT_LINE('i变量小于'||i);    
  else
    DBMS_OUTPUT.PUT_LINE('i变量等于'||i);
  end if;
exception
  when error_message then
  DBMS_OUTPUT.PUT_LINE('exception块');
end;


  从下面这个例子中可以看出方法的声明和调用
  -- 方法声明的语法

 function function_name(parameter type)return type is       -- 方法声明头部 指定返回类型

  …declare variant -- 变量定义处
  begin
           …      --方法逻辑处理处
  end function_name;                                                                   -- 方法结束 
例2:
declare
i number :=1;
p number :=1;
function testOne(j number)return number is     /* 声明方法testOne,并且指明返回值为number类型 */
    t_num number := 0;
begin
   t_num:=t_num+j;
   return t_num;
end testOne;                                    /* 声明方法testOne 结束 */
begin
  while i<=10 loop
    i:=i+1;
    p:=testOne(i);                              /* 调用方法testOne,将返回值传递到变量P */
    DBMS_OUTPUT.put_line('p输出'||p);
  end loop;
end;

 

从下面的例子可以看出过程的声明和调用

声明方法的语法:

procedure procedure_name(parameter IN type) is 
  …declare variant --变量声明
  begin     -- 方法核心内容
  …
  …
  exception --异常处理
  …
  …
  end procedure_name;

例3:

declare
i number:=1;                            /*声明一个循环初始值*/
procedure pro_fun(j number) is          /*定义一个过程*/
  y number := 0;                        /*声明一个局部变量*/
  begin
    y:=j;                               /*将方法参数赋值y*/
    DBMS_OUTPUT.put_line(y);
end pro_fun;                            /*过程声明结束*/
begin
  for i in 1..100 loop
    pro_fun(i);                         /*循环调用过程方法*/
  end loop;
end;



 

建立内嵌函数 
语法如下:
CREATE [OR REPLACE] FUNCTION function_name
[(argment [ { IN| IN OUT }] type,
    	 argment [ { IN | OUT | IN OUT } ] type]
RETURN return_type 
{ IS | AS }
<类型.变量的说明> 
BEGIN
FUNCTION_body
EXCEPTION
其它语句
END;
创建过程语法:
CREATE [OR REPLACE] PROCEDURE Procedure_name
[ (argment [ { IN | IN OUT }] Type,
      argment [ { IN | OUT | IN OUT } ] Type ]
{ IS | AS }
<类型.变量的说明> 
BEGIN
<执行部分>
EXCEPTION
<可选的异常错误处理程序>
END;


调用过程:
EXEC[UTE]  Procedure_name( parameter1, parameter2…);

 

创建触发器语法:
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER | INSTEAD OF}
{INSERT | DELETE | UPDATE [OF column [, column …]]}
ON {[schema.] table_name | [schema.] view_name}
[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]
[FOR EACH ROW ]
[WHEN condition]
trigger_body;




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值