ストアドプロシージャ、ファンクション、パッケージを作成するには、Oracleデータベース(6)

まず、ストアドプロシージャ

  1. 導入ストアドプロシージャ
    のOracle AKA手順サブルーチンに格納されたA;
    B、名前付きPL / SQLブロック、コンパイルされたデータベースに格納され、
    各部品C、ストアドプロシージャ。

    声明部分;
    可执行部分;
    异常处理部分(可选)。
    

    D、保存された分類手順:

    过程-执行某些操作;
    函数-执行操作并返回值;
    
  2. ストアドプロシージャの利点は
    モジュラー:論理モジュールに分割プログラム、
    B、再利用:プロシージャ・コールの任意の数であってもよく、
    C、保守:簡素化保守操作;
    D、セキュリティ:アクセス許可を設定するので、データをより安全な。

  3. ストアドプロシージャを作成するための構文

--创建存储过程:
create [or replace] procedure 存储过程名称 [(参数名称 参数类型,参数名称 参数类型)]
is|as
局部变量声明区
begin
[可执行SQL语句;]
[exception
异常处理语句]
end 过程名称;

--调用存储过程
begin
过程名称[(参数名称 参数类型,参数名称 参数类型)];
end;

例:
パラメータストアドプロシージャで:

--3. 创建一个带参数的存储过程,根据制定的参数删除一个员工。
--创建存储过程:
create or replace procedure emp2(theEmpNo emp.empNo%type)
as
begin
delete from emp where empNo = theEmpNo;
dbms_output.put_line('删除成功!');
end;

--调用存储过程:
declare
theEmpNo emp.empNo%type;
begin
theEmpNo:='&请输入员工编号';
emp2(theEmpNo);
end;

outパラメータストアドプロシージャ:

--4.创建一个带输出参数的存储过程,在这个过程中首先调用上面的那个存储过程,然后用输出参数返回剩下的员工人数
--创建存储过程:
create or replace procedure emp3(
theDeptNo emp.deptNo%type,   --员工编号
peopleNumber out number    --人数
)
as
begin
emp2(theDeptNo);
select count(*) into peopleNumber from emp;
dbms_output.put_line(peopleNumber);
end;

--调用存储过程:
declare 
theDeptNo emp.empNo%type;   --员工编号
peopleNumber number;    --人数
begin
theDeptNo:='&请输入员工编号';
emp3(theDeptNo,peopleNumber);
end;
  1. 独立したトランザクション
    A、独立したトランザクション処理

    主事务处理启动独立事务处理;
    主事务处理启动独立事务处理;
    自主事务处理存储过程内的SQL操作;
    然后终止自主事务处理;
    然后终止自主事务处理。
    

    カスタマイズにトランザクション処理手順のためにB、PRAGMA AUTO NO MOUS取引タグ記憶
    C、前記独立したトランザクション:

    与主事务处理的状态无关;
    提交或回滚操作不影响主事务处理;
    自主事务处理的结果对其他事务是可见的;
    能够启动其他自主事务处理。
    

第二に、機能

  1. 関数の構文を作成します
grant or replace function 函数名称 [(参数名称 参数类型,参数名称 参数类型)] return 返回类型
is|as
[局部变量声明]
begin
执行语句;
return 返回值;
[exception 
异常处理;]
end;

例:

--2.定义一个函数,用来求一个数的N次幂的结果并返回,底数和幂数在调用函数的时候作为参数传递过来
--创建函数:
create or replace function power(
a int, --变量值
b int  --次幂
)
return int
as
c int;
begin
for i in 1..b
loop
c:=c*a;
end loop;
return c;
end;

--调用函数:
declare
a int;
b int;
c int;
begin
a:='&请输入一个数字';
b:='&请输入次幂';
c:=power(a,b)
dbms_output.put_line(c);
end;
  1. 定義された機能とアクセス機能
    、定義された機能制限:

    形参不能是PL/SQL类型
    函数的返回类型也必须是数据库类型
    

    B、2つの方法でアクセス関数:

    使用PL/SQL块
    使用SQL语句
    
  2. ストアドプロシージャと関数

プロセス 機能
PL / SQL文として実装 呼び出し式の一環として、
仕様では句のRETURNが含まれていません これは、RETURN句で仕様書に含まれている必要があります
値は返されません あなたは、単一の値を返す必要があります
RETURN文は含んでいてもよいが、異なる機能と、値を返すために使用することはできません これは、少なくとも一つのRETURN文が含まれている必要があります

第三に、パッケージ

  1. ヘッダ構文を作成します。
create or replace package 包名称
is|as
[定义存储过程;]
[定义函数;]
end 包名;
  1. パッケージ本体の定義
create or replace package body 包名
is|as
实现包头中定义的过程或函数:
end 包名;
--创建包头
create or replace package power_package
is
procedure addPower(powerName varchar2,powerPic varchar2,del number);   --向表中添加数据
function getSum(beginNumber int,endNumber int) return int;       --求数字a到数字b的和
end power_package;

--程序包主体定义
create or replace package body power_package
as
procedure addPower(powerName varchar2,powerPic varchar2,del number)
as
begin
insert into tb_power values(zb.nextval,powerName,powerPic,del);
end addPower;

function getSum(beginNumber int,endNumber int) return int
as
b int:=0;    --存储结果
begin
for i in beginNumber..endNumber
loop
b:=b+i;
end loop;
return b;
end getSum;
end power_package;

/* 添加权限数据 */
begin
power_package.addPower('VIP','sac/casca/aaa.png',null);
end;

/*求beginNumber到endNumber的和并返回*/
	--调用包中的函数:
		declare
		beginNumber int;
		endNumber int;
		a int;
		begin
		beginNumber:='&请输入一个起始数字';
		endNumber:='&请输入一个结束数字';
		a:=power_package.getSum(beginNumber,endNumber);
		dbms_output.put_line(a);
		end;
  1. パッケージの利点
    A、モジュラー
    B、簡単にアプリケーションの設計
    C、情報隠蔽の
    D、新機能の
    電子、より良いパフォーマンス

第四に、内蔵されたパッケージ

パッケージ名 説明
DBMS_出力 処理PL / SQLブロックおよびデバッグ情報出力ルーチン
DBMS_ LOB LOBデータは、操作のタイプの機能を提供します
DBMS_ XMLQUERY 機能のXML型にデータを変換するために提供
DBMS RANDOM 乱数ジェネレータを提供
UTL_ファイル PL / SQLプログラムで読み取りと書き込みのオペレーティング・システムのテキスト・ファイルへ
  1. DBMS_出力
    ここに画像を挿入説明
  2. DBMS_ LOB
    ここに画像を挿入説明
    ここに画像を挿入説明
  3. DBMS_ XMLQUERY
    ここに画像を挿入説明
  4. DBMS RANDOM
    ここに画像を挿入説明
    ここに画像を挿入説明
  5. UTL_ファイル
    ここに画像を挿入説明
    ここに画像を挿入説明
公開された36元の記事 ウォン称賛7 ビュー2061

おすすめ

転載: blog.csdn.net/q_2540638774/article/details/103901255