05ストアド・プロシージャ、ストアド・ファンクションおよびパケット

特定の操作を実行する手順、出入力パラメータと出力パラメータを有することができる機能が完了したことを記憶されています。結果を返す関数を記憶され、ヘッド関数戻り句の使用は、結果を返すためにreturn節の手術で使用される戻りのタイプを指定します。パッケージ仕様、パッケージ本体:ストアドプロシージャ、関数などを整理するためのパッケージは、パケットが2つの部分に分割されます。

1、システム、およびソフトウェアの制約

  • win10
  • oracle11g
  • SQLの開発者

図2に示すように、メモリ動作

  • 1メモリ書き込みプロセスは、テーブルにデータを追加します
# 创建存储过程,没有参数
create or replace procedure pro_demo1 
is
begin
  insert into emp(empno,ename,sal) values (88,'wanhe',2000);
end;
# 调用存储过程
exec pro_demo1();  --exec是sqlplus命令
或者
call  pro_demo1(); --call是sql命令
  • 2従業員の名前と給与を入力することにより、従業員の給与情報を更新するストアドプロシージャを書きます
#创建存储过程,有两个入参
create or replace procedure pro_demo2 (name varchar2,newSalary number)
as
begin
  update emp set sal=newSalary where ename=name;
end;
# 调用存储过程
exec pro_demo2('SCOTT',9000);
  • 従業員の参加に名前参​​照することにより、従業員の数を返すストアドプロシージャを作成するための3
# 有入参,有出参
create or replace procedure pro_demo3 (no in emp.empno%type,username out emp.ename%type)
is 
begin
  select ename into username from emp where empno=no;
end;
# 在块中调用这样的存储过程
declare
  v_no emp.empno%type;
  v_ename emp.ename%type;
begin
  v_no:=&empno;
  pro_demo3(v_no,v_ename);
  dbms_output.put_line('雇员姓名:'||v_ename);
end;

図3に示すように、操作機能ストレージ

  • 1件の検索結果を返し、10に参加するためにメモリ機能を作成します。
# 给入参加10,返回结果
create or replace function fun_demo1(num number) return number
is
  v_num number(10);
begin
  v_num:=num+10;
  return v_num;
end;  
# 在块中调用存储函数
declare
  v_num number(10);
begin
  v_num:=fun_demo1(25);
  dbms_output.put_line('函数返回值为:'||v_num);
end;

図4に示すように、パッケージの操作

# 创建一个包,只有声明没有实现
create or replace package pac_demo1
is
  procedure pro_demo8(name emp.ename%type,newSal in number);
  function fun_demo8(name varchar2) return number;
end; 
# 创建包体,完成实现
create or replace package body pac_demo1
is
  procedure pro_demo8 (name emp.ename%type,newSal in number)
  is
  begin
    update emp set sal=newSal where ename=name;
  end;
  function fun_demo8 (name varchar2) return number
  is
    v_sal emp.sal%type;
  begin
    select sal into v_sal from emp where ename=name;
    return v_sal;
  end;
end;
# 调用
exec pac_demo1.pro_demo8('SCOTT',1111);
select pac_demo1.fun_demo8('SCOTT') from dual;

これらは、Oracleのストアドプロシージャ、関数、およびそれらが構成されているパッケージのストレージの一つです。

おすすめ

転載: www.cnblogs.com/alichengxuyuan/p/12576994.html