2009-03-03 19 views
5

私はoracle関数を持っています。これはselect文からのテーブルの行型です。この関数に現在の行を渡す必要があります。いくつかの処理を行い、値を返すことを示します。 select文のコンテキスト内でoldとnew inトリガーに相当する疑似変数がありますか?Oracleのselect文からRowtypeパラメータを持つ関数を呼び出す方法

私は複数のパラメータを渡す避けたいので、質問はその文脈の中で理解すべきである

select *,function1(rowtype) from table1 

ような何かをしたいと思います。

答えて

0

なぜ行のIDを渡してその機能を動作させるだけではないのですか?


EDIT:その場でOBJECT/TYPEを構築し、それを関数に渡すことができます。次に、データを一度クエリするだけで済みます。例が必要な場合は教えてください。

DECLARE 
    foo table1%ROWTYPE; 
BEGIN 
    function1(foo); 
END; 

EDIT:あなたはこれを行うことができ


+1

この場合、行情報を再度取得する必要があります –

2

あなたはこの手法を使用する方法の詳細については、this blog postをチェックアウトすることができます。

+1

これは単一のselect文にする必要があります.PL/SQLを実行すると多くのオプションがあります –

3

これは%ROWTYPEでは実行できません。 %ROWTYPEは実際にはPL/SQLレコード・タイプです。これはSQLの正当な型ではないため、SELECTでは使用できません。あなたは表と同じ列を持つオブジェクト型を作成する必要があり、変更ではなく%のROWTYPEのそのオブジェクトタイプを期待するために機能するには、その後、あなたはこのような何か書くことができます。欠点

SELECT function(table1_typ(column1, column2, column3)) 
    FROM table1 t1 

を:あなたはまだする必要がありますSELECTのすべての列を入力し、テーブルを変更する場合は、オブジェクトの種類とSELECTも変更する必要があります。

+0

私は実際にこのオプションを探していました複数のcolumnnsをストアドプロシージャに渡しますが、まだすべての列を渡す必要がある場合は、SPに渡して型に変換して送信する方が良いと思います。 –