ホームページ  >  記事  >  データベース  >  Oracleのストアドプロシージャのoutパラメータは何ですか

Oracleのストアドプロシージャのoutパラメータは何ですか

WBOY
WBOYオリジナル
2022-03-07 15:48:565815ブラウズ

Oracle では、ストアド プロシージャの out パラメータは出力モードのパラメータです。値の出力に使用されます。受信値は無視されます。サブルーチン内で変更できます。サブルーチンの後が実行されると、out モード パラメータの最終値は、呼び出し中に対応する実際のパラメータ変数に割り当てられます。out モード パラメータは、変数を通じて呼び出す必要があります。

Oracleのストアドプロシージャのoutパラメータは何ですか

このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。

Oracle のストアド プロシージャの out パラメータとは何ですか

1. ストアド プロシージャとは何ですか

Oracle ストアド プロシージャは、レコード セットであると言えます。いくつかのPL/SQL文で構成されるコード・ブロックで構成されています。これらのPL/SQL文コードは、いくつかの関数(単一表または複数表の追加、削除、変更および問合せ)を実装し、このコード・ブロックにこの機能を使用するときは、彼に電話するだけです。

ストアド プロシージャの利点:

データベースがアクションを実行するとき、最初にコンパイルされてから実行されます。ただし、ストアド プロシージャはコンパイルされたコード ブロックであるため、PL/SQL 文よりも実行効率が高くなります。

ストアド プロシージャは、プログラムやネットワーク内で対話するときに多数の PL/SQL 文を置き換えることができるため、ネットワーク通信量を削減し、通信速度を向上させることもできます。

ストアド プロシージャを通じて、権限のないユーザーが制御下のデータベースに間接的にアクセスできるため、データのセキュリティが確保されます。

ストアド プロシージャの例:

--给指定的员工涨100块钱的工资,并且打印涨前和涨后的薪水
create or replace procedure raiseSalary(eno in number)
as
  --定义变量,保存涨前的薪水
  psal emp.sal%type;
begin
  --得到涨前的薪水
  select sal into psal from emp where empno=eno;
  --涨100
  update emp set sal=sal+100 where empno=eno;
  
  --要不要commit?
  --一般,不在存储过程或者存储函数中提交和回滚
  
  dbms_output.put_line('涨前:'||psal||'   涨后:'||(psal+100));
end;
/

2. out パラメータとは何ですか?

出力モードのパラメータは値を出力するために使用され、受信値は無視されます。サブルーチン内で変更できます。出力: サブルーチンの実行後、呼び出し時に out モード パラメータの最終値が対応する に割り当てられます。注: out モード パラメータは変数を通じて呼び出す必要があります。

out パラメータの例:

--查询某个员工的姓名 月薪和职位
/*
1. 查询某个员工的所有信息 ---> out参数太多
2. 查询某个部门中所有员工的所有信息 --> 返回集合
*/
create or replace procedure queryempinfo(eno in number,
                                         pename out varchar2,
                                         psal   out number,
                                         pjob   out varchar2)
as
begin
  select ename,sal,empjob into pename,psal,pjob from emp where empno=eno;
end;
/

推奨チュートリアル: 「Oracle ビデオ チュートリアル

以上がOracleのストアドプロシージャのoutパラメータは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。