特定の操作を実行する手順、出入力パラメータと出力パラメータを有することができる機能が完了したことを記憶されています。結果を返す関数を記憶され、ヘッド関数戻り句の使用は、結果を返すために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のストアドプロシージャ、関数、およびそれらが構成されているパッケージのストレージの一つです。