2011-12-13 10 views
0

私は、以下のシグネチャを持つORACLE関数を持っています。関数オラクルの出力パラメータの1つを使用PL/SQL

Function function1(parameter1 in number, 
       parameter2 in number, 
       parameter3 in number, 
       parameter4 out number, 
       parameter5 out varchar(20), 
       parameter6 out varchar(20)) 
      RETURN number is 

私は私のSELECT文で出力parameter5にアクセスするにはどうすればよい

Select parameter5 
from table1 ti 
where function1(t1.parameter1,t1.parameter2,t1.parameter3) 

、このようなSQLでこの機能を使用したいですか?上記の選択操作を一括して実行したいので、私は変数を使用して結果セットをループするのは快適ではありません。

私は上記のSQLクエリで一括してほとんど操作を実行する必要がないので、配列を使用したくありません。

ありがとうございました!

乾杯、 Dwarak

答えて

1

私はパラメータ5と返される数値の両方が必要と仮定しますので、型を作成して代わりにそれを再実行する方が良いでしょう。このような

何か:

create type res_type as object 
(
rc number, 
parameter5 varchar2(20) 
); 

Function function1(parameter1 in number, 
       parameter2 in number, 
       parameter3 in number, 
       parameter4 out number, 
       parameter5 out varchar(20), 
       parameter6 out varchar(20)) 
      RETURN res_type is 

UPDATE:

は、その後、あなたの選択にあなたはこのような何かを行うことができます。this.itため

select function1(t1.parameter1,t1.parameter2,t1.parameter3).parameter5 
from table1 ti 
where function1(t1.parameter1,t1.parameter2,t1.parameter3).rc = .... 
+0

これの入力をありがとう! –

1

あなたが直接することはできませんが、あなたは、その周りのようなものラッパー関数を置くことができる:これはしかし、一括操作のためにうまく拡張しない場合があります

function function1_wrap(parameter1 in number, 
    parameter2 in number, 
    parameter3 in number) 
    return varchar2 is 
declare 
    rc number; 
    parameter4 number; 
    parameter5 out varchar(20); 
    parameter6 out varchar(20); 
begin 
    rc := function1(parameter1, parameter2, parameter3, parameter4, parameter5); 
    return parameter5; 
end; 

を。あなたは関数が値を取得しているかどうかを再現しようとする方が良いかもしれません。パラメータ4と6の値を見つける部分を、最初から削除することができます。あなたは以下のようなサブクエリものを使用することができます

+0

おかげで本当の迅速な勝利でした。.. :) –

-1

、TABLE1 t1から

選択*から(t1.parameter1選択し、t1.parameter2、t1.parameter3機能1(t1.parameter1、t1.parameter2、t1.parameter3)func_result )ここでfunc_result = 1

+0

これはどのように 'parameter5'の値を取得しますか? –

関連する問題