次のようにパッケージから関数を呼び出すと、機能します。少し複雑ですが、条件変数がたくさんあります。
resultval := TG_PKG_ENTITY_TOTAL.user_entity_total('0012345678',
'01-JUL-1955','30-JUN-2013',amounttype,accountrec,deptrec,appealrec,
allocschoolrec,isunrestricted,pledge_exclude,pledgetypes_exclude,
honormem_exclude) ;
select ステートメントの一部として使用しようとすると、機能しません。これを修正する方法はありますか?カスタムデータ型への外部参照に関係している可能性があると思います。しかし、最初の例も失敗すると思いますが、うまくいきます。
以下は失敗します。
SELECT e.id_number,TG_PKG_ENTITY_TOTAL.user_entity_total(e.id_number,
'01-JUL-1955','30-JUN-2013',amounttype,accountrec,deptrec,appealrec,
allocschoolrec,isunrestricted,pledge_exclude,pledgetypes_exclude,
honormem_exclude) AS SoftCredit
FROM advance.entity e
*FAIL は、エラー 6550 が発生することを意味します 引数の数または型が間違っています
次のタイプは、TG_PKG_TYPES というパッケージで定義されています。
TYPE string_array IS TABLE OF VARCHAR2(500);
TYPE account_rec IS RECORD
(condition VARCHAR2(20),
account_array string_array);
TYPE dept_rec IS RECORD
(condition VARCHAR2(20),
dept_array string_array);
TYPE allocschool_rec IS RECORD
(condition VARCHAR2(20),
school_array string_array);
TYPE appeal_rec IS RECORD
(condition VARCHAR2(20),
appeal_array string_array);
TYPE amounttype_rec IS RECORD
(GiftAmt BOOLEAN :=FALSE,
GiftCreditAmt BOOLEAN :=FALSE,
PaymentAmt BOOLEAN :=FALSE,
PayCreditAmt BOOLEAN :=FALSE,
CompanyMatch BOOLEAN :=FALSE,
EmployeeMatch BOOLEAN :=FALSE,
EmpSpouseMatch BOOLEAN :=FALSE,
EmpMatchClaim BOOLEAN :=FALSE,
EmpSpouseMatchClaim BOOLEAN :=FALSE,
PledgeAmt BOOLEAN :=FALSE,
PledgeCreditAmt BOOLEAN :=FALSE);
機能パラメータ:
FUNCTION user_entity_total( id_number VARCHAR2 := NULL,
i_start_date VARCHAR2 :=NULL,
i_end_date VARCHAR2 :=NULL,
i_amount_type tu_pkg_types.amounttype_rec :=NULL,
i_account IN tu_pkg_types.account_rec :=NULL,
i_dept IN tu_pkg_types.dept_rec :=NULL,
i_appeal IN tu_pkg_types.appeal_rec :=NULL,
i_allocschool IN tu_pkg_types.allocschool_rec :=NULL,
i_isunrestricted CHAR :=NULL,
i_excludepledge BOOLEAN :=FALSE,
i_excludepledgetypes BOOLEAN :=FALSE,
i_excludehonormem BOOLEAN :=FALSE) RETURN NUMBER;