Oracle_学習開発サブルーチン_プロセス
サブルーチンとは、パラメータを持つことができ、異なるアプリケーションで複数回呼び出すことができる名前のPL/SQLブロックを指します.PL/SQLには、特定の操作を実行するためのプロシージャと関数と、特定のデータを返すための関数の2種類のサブルーチンがあります.
一、開発プロセス
プロシージャは、特定のアクションを実行するために使用されます.アプリケーションで特定のアクションを実行する必要がある場合は、アクションに基づいてプロシージャを作成できます.プロシージャを使用することで、クライアント・プログラムの開発とメンテナンスを簡素化するだけでなく、アプリケーションのパフォーマンスを向上させることができます.構文は次のとおりです.
上記のように:procedure_nameはプロシージャ名を指定し、argument 1、argument 2はプロシージャのパラメータを指定し、modeはパラメータモードを指定し、dateType 1、dateType 2はプロシージャのパラメータタイプを指定します.IS/ASは、PL/SQLブロックの開始を表すために使用される.パラメータタイプを指定する場合はパラメータ長を指定できません.また、プロシージャの作成時に入力パラメータ(IN)を指定したり、出力パラメータ(OUT)を指定したり、入出力パラメータ(INOUT)を指定したりすることができます.プロシージャで入力パラメータを使用することで、アプリケーションのデータを実行部に渡すことができます.プロシージャの出力パラメータを使用することで、実行部のデータをアプリケーションに渡すことができます.サブルーチンのパラメータを定義する場合、パラメータモードを指定しない場合はデフォルトで入力パラメータ、出力パラメータを定義する場合はOUTキー、入出力パラメータを定義する場合はINOUTキーを指定する必要があります.
1、セットアッププロセス:パラメータなし
例は次のとおりです.
プロシージャprocedure_が確立されましたtest 1後、このプロシージャを呼び出すことができます.SQL*Plus環境でプロシージャを呼び出すには、execute(exeと略記)コマンドを使用する方法と、callコマンドを使用する方法の2つがあります.次のようにします.
例1:executeコマンドを使用してプロシージャを呼び出す
例2:callコマンドを使用してプロシージャを呼び出す
2、セットアッププロセス:INパラメータ付き
例は次のとおりです.
プロシージャを作成するときに、パラメータにパラメータ名とパラメータタイプが指定されている場合は、パラメータ名とパラメータタイプを定義する必要はありません.
EXec、call呼び出しで作成したprocedure_Insertプロシージャ、コードは次のとおりです.
3、セットアッププロセス:OUTパラメータ付き
プロセスは、特定の動作を実行するためだけでなく、データを出力するためにも使用でき、プロセス中にデータを出力するためにOUTまたはINOUTパラメータを使用して完了します.
例は次のとおりです.
注意:
プロシージャの作成中にエラーが発生した場合、エラーの場所が明記されていない場合は、「show error」コマンドでエラーの場所を表示できます.
上記のように、アプリケーションでプロシージャを呼び出す場合は、変数が出力パラメータを受け入れるデータを定義する必要があります.次に、SQL*Plusでプロシージャの例を呼び出します.
4、セットアッププロセス:INOUTパラメータ付き
プロシージャを定義する場合は、INパラメータとOUTパラメータだけでなく、IN OUTパラメータを指定することもできます.IN OUTパラメータは入出力パラメータです.このパラメータを使用する場合、プロシージャを呼び出す前に変数を介してそのパラメータにデータを渡す必要があります.呼び出しが終了すると、oracleはその変数を介してプロシージャ結果をアプリケーションに渡します.例は次のとおりです.
呼び出しプロシージャ
二、開発関数
参照<Oracle_学習開発サブルーチン_関数>
一、開発プロセス
プロシージャは、特定のアクションを実行するために使用されます.アプリケーションで特定のアクションを実行する必要がある場合は、アクションに基づいてプロシージャを作成できます.プロシージャを使用することで、クライアント・プログラムの開発とメンテナンスを簡素化するだけでなく、アプリケーションのパフォーマンスを向上させることができます.構文は次のとおりです.
create [or replace]procedure procedure_name
(argument1[mode] dateType1,argument2[mode] dateType2........)
IS/AS
PL/SQL block
上記のように:procedure_nameはプロシージャ名を指定し、argument 1、argument 2はプロシージャのパラメータを指定し、modeはパラメータモードを指定し、dateType 1、dateType 2はプロシージャのパラメータタイプを指定します.IS/ASは、PL/SQLブロックの開始を表すために使用される.パラメータタイプを指定する場合はパラメータ長を指定できません.また、プロシージャの作成時に入力パラメータ(IN)を指定したり、出力パラメータ(OUT)を指定したり、入出力パラメータ(INOUT)を指定したりすることができます.プロシージャで入力パラメータを使用することで、アプリケーションのデータを実行部に渡すことができます.プロシージャの出力パラメータを使用することで、実行部のデータをアプリケーションに渡すことができます.サブルーチンのパラメータを定義する場合、パラメータモードを指定しない場合はデフォルトで入力パラメータ、出力パラメータを定義する場合はOUTキー、入出力パラメータを定義する場合はINOUTキーを指定する必要があります.
1、セットアッププロセス:パラメータなし
例は次のとおりです.
create or replace procedure procedure_test1
is
begin
dbms_output.put_line(to_char(sysdate,'YYYY-MM-DD'));
end;
/
プロシージャprocedure_が確立されましたtest 1後、このプロシージャを呼び出すことができます.SQL*Plus環境でプロシージャを呼び出すには、execute(exeと略記)コマンドを使用する方法と、callコマンドを使用する方法の2つがあります.次のようにします.
例1:executeコマンドを使用してプロシージャを呼び出す
set serveroutput on;
execute procedure_test1;
例2:callコマンドを使用してプロシージャを呼び出す
SQL>set serveroutput on;
SQL>call procedure_test1();
2、セットアッププロセス:INパラメータ付き
例は次のとおりです.
create or replace procedure procedure_in
(v_name varchar2,v_age varchar2,v_address varchar2,v_id number)
is
begin
insert into cip_temps values(v_name,v_age,v_address,v_id);
end;
/
プロシージャを作成するときに、パラメータにパラメータ名とパラメータタイプが指定されている場合は、パラメータ名とパラメータタイプを定義する必要はありません.
EXec、call呼び出しで作成したprocedure_Insertプロシージャ、コードは次のとおりです.
SQL>exec procedure_in('888','888','888',888);
SQL>exec procedure_in('999','999','999',999);
3、セットアッププロセス:OUTパラメータ付き
プロセスは、特定の動作を実行するためだけでなく、データを出力するためにも使用でき、プロセス中にデータを出力するためにOUTまたはINOUTパラメータを使用して完了します.
例は次のとおりです.
CREATE OR REPLACE procedure procedure_out
(v_name out varchar2,v_age out varchar2,v_address out varchar2,v_id number,error out varchar2)
is
begin
select name,age,address into v_name,v_age,v_address from cip_temps where id=v_id;
exception
when no_data_found then
error:='1';
end;
/
注意:
プロシージャの作成中にエラーが発生した場合、エラーの場所が明記されていない場合は、「show error」コマンドでエラーの場所を表示できます.
上記のように、アプリケーションでプロシージャを呼び出す場合は、変数が出力パラメータを受け入れるデータを定義する必要があります.次に、SQL*Plusでプロシージャの例を呼び出します.
SQL> var name varchar2(10)
SQL> var age varchar2(10)
SQL> var address varchar2(10)
SQL> var error varchar2(10)
SQL> exec procedure_out(:name,:age,:address,888,:error);
SQL> print name age address error;
SQL> print error;
4、セットアッププロセス:INOUTパラメータ付き
プロシージャを定義する場合は、INパラメータとOUTパラメータだけでなく、IN OUTパラメータを指定することもできます.IN OUTパラメータは入出力パラメータです.このパラメータを使用する場合、プロシージャを呼び出す前に変数を介してそのパラメータにデータを渡す必要があります.呼び出しが終了すると、oracleはその変数を介してプロシージャ結果をアプリケーションに渡します.例は次のとおりです.
create or replace procedure procedure_inout
(num1 in out number,num2 in out number)
is
v1 number;
v2 number;
begin
v1:=num1/num2;
v2:=num1+num2;
num1:=v1;
num2:=v2;
end;
/
呼び出しプロシージャ
SQL> var num1 number
SQL> var num2 number
SQL> exec :num1:=12
SQL> exec :num2:=12
SQL> exec procedure_inout(:num1,:num2);
SQL> print num1 num2;
二、開発関数
参照<Oracle_学習開発サブルーチン_関数>