ストアド・プロシージャの定義と利点
3252 ワード
ストアド・プロシージャの定義と利点
きおくてつづき
sql文を実行するときは、まずコンパイルしてから実行します.ストレージ・プロシージャは、コンパイルされたいくつかのsql文です.アプリケーションが必要なときに直接呼び出せばいいので、効率的です.
ストレージ・プロシージャの説明
ストレージ・プロシージャは、コンパイルおよび最適化された後にデータベース・サーバに格納されるストリーム制御およびSQL文によって記述されるプロシージャであり、アプリケーションが使用される場合は呼び出すだけでよい.ORACLEでは,いくつかの関連プロセスを組み合わせてパッケージを構成することができる.
ストレージ・プロシージャの使用には、次のような利点があります.
*ストレージ・プロシージャの機能により、SQL言語の機能と柔軟性が大幅に向上します.ストレージ・プロシージャは、ストリーム制御文で記述でき、柔軟性が高く、複雑な判断と複雑な演算を完了できます.
*データのセキュリティと完全性を保証します.
#ストレージ・プロシージャを使用すると、権限のないユーザーが制御下でデータベースに間接的にアクセスでき、データのセキュリティが保証されます.
#ストレージ・プロシージャを使用すると、関連するアクションを一緒に実行でき、データベースの整合性を維持できます.
*ストレージ・プロシージャを再実行する前に、データベースは構文解析と構文解析を行い、最適化された実行スキームを示しました.このようなコンパイル済みプロセスは、SQL文のパフォーマンスを大幅に改善します.SQL文を実行する作業の大部分が完了したため、ストレージ・プロシージャは非常に高速で実行できます.
*ネットワークの通信量を削減できます.
*次のように、エンタープライズ・ルールを表す演算プログラムをデータベース・サーバに配置します.
#集中制御.
#エンタープライズ・ルールが変更された場合、サーバでストレージ・プロシージャを変更すれば、アプリケーションを変更する必要はありません.エンタープライズ・ルールの特徴は、常に変化することです.エンタープライズ・ルールを表す演算プログラムをアプリケーションに入れると、エンタープライズ・ルールが変化すると、アプリケーションの変更作業量が非常に大きくなります(アプリケーションの修正、発行、インストール).エンタープライズ・ルールを表す演算をストレージ・プロシージャに挿入すると、エンタープライズ・ルールが変更された場合、ストレージ・プロシージャを変更すればよいので、アプリケーションは変更する必要はありません.
データベース・ストレージ・プロシージャの本質は、データベース側に配置された定義コードのセットとSQLです.
SQLの言語を使用して、データベース・アクセスのストアド・プロシージャを記述します.構文は次のとおりです.
[]内のコンテンツはオプションであり、()内のコンテンツは必須です.
例:ユーザがテーブルtmpのレコードを削除するストアド・プロシージャSelect_を作成したい場合deleteは次のように書くことができます.
例:ユーザがtmpテーブルのある年のデータをクエリーしたいストレージプロセス
ここで@yearはストアド・プロシージャのパラメータです
例:このストレージ・プロシージャは、あるノードnから最上位層の父親ノードを見つけ、このようなよく使われるプロシージャはストレージ・プロシージャが担当し、Webページで共有に達するように繰り返し使用することができる.
空:ノードが最上位ノードであることを示します
fjdid(親ノード番号)
ノードn非空:そのノードを表す父親のノード番号
dwmc(単位名)
まとめ:第一に、ストレージ・プロシージャはSQL文がプリコーディングされているため、実行速度が速い.第二に、ストレージ・プロシージャは、パラメータ、出力パラメータ、単一または複数の結果セット、および戻り値を受け入れることができる.エラーの原因をプログラムに返すことができます.第三に、ストレージ・プロシージャは比較的安定して動作し、多くのエラーは発生しません.一度成功すれば、後でこのプログラムで実行します.第四に、ストレージプロセスは主にサーバ上で実行され、クライアントに対する圧力を減らす.第五に、ストレージ・プロシージャには、プログラム・フロー、論理、およびデータベースへのクエリーが含まれます.データロジックをカプセル化して非表示にすることもできます.6.ストアド・プロシージャは、単一のストアド・プロシージャで一連のSQL文を実行できます.第七に、ストレージ・プロシージャは、独自のストレージ・プロシージャから他のストレージ・プロシージャを参照することができ、一連の複雑な文を簡略化することができます.
きおくてつづき
sql文を実行するときは、まずコンパイルしてから実行します.ストレージ・プロシージャは、コンパイルされたいくつかのsql文です.アプリケーションが必要なときに直接呼び出せばいいので、効率的です.
ストレージ・プロシージャの説明
ストレージ・プロシージャは、コンパイルおよび最適化された後にデータベース・サーバに格納されるストリーム制御およびSQL文によって記述されるプロシージャであり、アプリケーションが使用される場合は呼び出すだけでよい.ORACLEでは,いくつかの関連プロセスを組み合わせてパッケージを構成することができる.
ストレージ・プロシージャの使用には、次のような利点があります.
*ストレージ・プロシージャの機能により、SQL言語の機能と柔軟性が大幅に向上します.ストレージ・プロシージャは、ストリーム制御文で記述でき、柔軟性が高く、複雑な判断と複雑な演算を完了できます.
*データのセキュリティと完全性を保証します.
#ストレージ・プロシージャを使用すると、権限のないユーザーが制御下でデータベースに間接的にアクセスでき、データのセキュリティが保証されます.
#ストレージ・プロシージャを使用すると、関連するアクションを一緒に実行でき、データベースの整合性を維持できます.
*ストレージ・プロシージャを再実行する前に、データベースは構文解析と構文解析を行い、最適化された実行スキームを示しました.このようなコンパイル済みプロセスは、SQL文のパフォーマンスを大幅に改善します.SQL文を実行する作業の大部分が完了したため、ストレージ・プロシージャは非常に高速で実行できます.
*ネットワークの通信量を削減できます.
*次のように、エンタープライズ・ルールを表す演算プログラムをデータベース・サーバに配置します.
#集中制御.
#エンタープライズ・ルールが変更された場合、サーバでストレージ・プロシージャを変更すれば、アプリケーションを変更する必要はありません.エンタープライズ・ルールの特徴は、常に変化することです.エンタープライズ・ルールを表す演算プログラムをアプリケーションに入れると、エンタープライズ・ルールが変化すると、アプリケーションの変更作業量が非常に大きくなります(アプリケーションの修正、発行、インストール).エンタープライズ・ルールを表す演算をストレージ・プロシージャに挿入すると、エンタープライズ・ルールが変更された場合、ストレージ・プロシージャを変更すればよいので、アプリケーションは変更する必要はありません.
データベース・ストレージ・プロシージャの本質は、データベース側に配置された定義コードのセットとSQLです.
SQLの言語を使用して、データベース・アクセスのストアド・プロシージャを記述します.構文は次のとおりです.
CREATE PROC[EDURE] procedure_name [;number]
[
{@parameter data_type} ][VARYING] [= default] [OUTPUT]
]
[,...n]
[WITH
{
RECOMPILE
| ENCRYPTION
| RECOMPILE, ENCRYPTION
}
]
[FOR REPLICATION]
AS
sql_statement [...n]
[]内のコンテンツはオプションであり、()内のコンテンツは必須です.
例:ユーザがテーブルtmpのレコードを削除するストアド・プロシージャSelect_を作成したい場合deleteは次のように書くことができます.
Create Proc select_del As
Delete tmp
例:ユーザがtmpテーブルのある年のデータをクエリーしたいストレージプロセス
create proc select_query @year int as
select * from tmp where year=@year
ここで@yearはストアド・プロシージャのパラメータです
例:このストレージ・プロシージャは、あるノードnから最上位層の父親ノードを見つけ、このようなよく使われるプロシージャはストレージ・プロシージャが担当し、Webページで共有に達するように繰り返し使用することができる.
空:ノードが最上位ノードであることを示します
fjdid(親ノード番号)
ノードn非空:そのノードを表す父親のノード番号
dwmc(単位名)
CREATE proc search_dwmc @dwidold int,@dwmcresult varchar(100) output
as
declare @stop int
declare @result varchar(80)
declare @dwmc varchar(80)
declare @dwid int
set nocount on
set @stop=1
set @dwmc=""
select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold
set @result=rtrim(@dwmc)
if @dwid=0
set @stop=0
while (@stop=1) and (@dwid<>0)
begin
set @dwidold=@dwid
select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold
if @@rowcount=0
set @dwmc=""
else
set @result=@dwmc+@result
if (@dwid=0) or (@@rowcount=0)
set @stop=0
else
continue
end
set @dwmcresult=rtrim(@result)
exec pro-name [pram1 pram2.....]
まとめ:第一に、ストレージ・プロシージャはSQL文がプリコーディングされているため、実行速度が速い.第二に、ストレージ・プロシージャは、パラメータ、出力パラメータ、単一または複数の結果セット、および戻り値を受け入れることができる.エラーの原因をプログラムに返すことができます.第三に、ストレージ・プロシージャは比較的安定して動作し、多くのエラーは発生しません.一度成功すれば、後でこのプログラムで実行します.第四に、ストレージプロセスは主にサーバ上で実行され、クライアントに対する圧力を減らす.第五に、ストレージ・プロシージャには、プログラム・フロー、論理、およびデータベースへのクエリーが含まれます.データロジックをカプセル化して非表示にすることもできます.6.ストアド・プロシージャは、単一のストアド・プロシージャで一連のSQL文を実行できます.第七に、ストレージ・プロシージャは、独自のストレージ・プロシージャから他のストレージ・プロシージャを参照することができ、一連の複雑な文を簡略化することができます.