PL/SQL存储过程操作实例及其讲解说明

创建过程

过程使用CREATE OR REPLACE PROCEDURE语句创建,使用CREATE OR REPLACE PROCEDURE语句简化语法如下:

CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter_name [IN | OUT | IN OUT] type [, ...])]
{IS | AS}
BEGIN
  < procedure_body >
END procedure_name;

这里,

  • procedure-name 指定的程序的名称

  • [OR REPLACE] 选项允许修改现有的程序

  • 可选的参数列表中包含的名称,模式和类型的参数。IN表示该值将被从外部传递,OUT表示该参数将被用于从过程返回一个值到外面

  • procedure-body 包含可执行部分

  • AS关键字来代替了IS关键字用于创建一个独立的程序。

窗口截图:


该存储过程是查找数组中最大值,并输出,输入参数int_varray是创建的整型数组,创建语法如下:

create or replace type int_varray as table of int;

int_varray创建成功截图:


单独的存储过程实例源码:

-- Created on 2018/3/29 by E.WANG 
/*
过程使用CREATE OR REPLACE PROCEDURE语句创建,使用CREATE OR REPLACE PROCEDURE语句简化语法如下:

CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter_name [IN | OUT | IN OUT] type [, ...])]
{IS | AS}
BEGIN
  < procedure_body >
END procedure_name;
这里:

procedure-name 指定的程序的名称

[OR REPLACE] 选项允许修改现有的程序

可选的参数列表中包含的名称,模式和类型的参数。
IN表示该值将被从外部传递,OUT表示该参数将被用于从过程返回一个值到外面。

procedure-body 包含可执行部分

AS关键字来代替了IS关键字用于创建一个独立的程序。
*/

--求数组中的最大值并输出
create or replace procedure MaxOfVarray(valueList in int_varray,z out int) 
as
tmpResult int:=0; 
begin
  for x in 1..valueList.count loop
      if valueList(x)>=tmpResult then
         tmpResult:=valueList(x);
      end if;
  end loop;
  z:=tmpResult;
end;  

    

声明并调用存储过程实例源码:

-- Created on 2018/3/29 by E.WANG 
/*
在Oracle的存储过程和函数中,其实IS和AS是同义词,没有什么区别。

还有在自定义类型(TPYE)和包(PACKAGE)时,使用IS和AS也并没有什么区别。

但是在创建视图(VIEW)时,只能使用AS而不能使用IS。

在声明游标(CURSOR)时,只能使用IS而不能使用AS。
*/
declare
  one int;
  two int;
  three int;
  --定义一个整型数组
  numlist int_varray;
  --声明并定义存储过程MaxOfTwo
  --找出两个数中的最值并输出该值
  procedure MaxOfTwo(x in int,y in int,z out int)
  as
  begin
     if x>y then
        z:=x;
     else
        z:=y;
     end if;
  end;

begin
  numlist:=int_varray(12,2,56,75,24);
  --调用存储过程MaxOfVarray
  MaxOfVarray(numlist,three);
  dbms_output.put_line('The max of int_varray(12,2,56,75,24): '|| three);
  --给变量one、two、three赋值
  one:=10;
  two:=20;
  --调用存储过程MaxOfTwo
  MaxOfTwo(one,two,three);
  dbms_output.put_line('The max of (10,20): '|| three);
end;

窗口截图:


运行结果截图:


猜你喜欢

转载自blog.csdn.net/henni_719/article/details/79739603
今日推荐