2011-07-06 14 views
4

プロシージャのパラメータで変更:このプロシージャ内で、私は以下のPLSQLは:私はこのような手順を持って

var1 := filter(var1); -- filter & assign to the same variable 
.... 
.... 
--do something with var1 

をしたい---

Procedure(var1 IN VARCHAR2, var2 IN VARCHAR2 ...) 
---lines of code--- 

をしかし、問題があることはできませんよプロシージャのINパラメータを定数として変更します。 私が考えることができる唯一のオプションは、新しいローカル変数&を作成/宣言することです。変更されたINパラメータ&は、それを後続のコードで使用します。 しかし、これはほぼ30のINパラメータがあるので、不器用なコードにつながっています。私はそれらのそれぞれに30の新しい変数を作成する必要があります。

plsqlプロシージャのINパラメータまたは上記の問題に対するその他の回避策を変更するには、必要なヘルプが必要です。

よろしく Vjの

答えて

9

問題は、あなたが許可されていない、あなたのフィルタ機能へのOUTのparamとしてVAR1合格しようとしているということです。あなたが持っている唯一のオプションは次のとおりです。

  • は、パラメータ
  • あなたはVAR1を変更したい場合は、あなたが手続きの仕様を変更する必要がありますローカル変数
3

にそれを割り当てることにしてください:

Procedure(var1 IN OUT VARCHAR2 ... 

しかし、約30のINパラメータがあります。データが関連している場合は、カスタムレコードタイプを作成してください。

その後
-- use CREATE OR REPLACE if at the schema level 
CREATE TYPE my_params_type IS RECORD(var1 type, var2 type ...); 

あなたの手順...

Procedure(params IN my_params_type) IS 
filtered_params my_params_type := params; 
BEGIN 
    filterd_params.var1 := filter(params.var1); 
    ... 

その

ような何か
関連する問題