Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> RE: Trigger - Missing IN or OUT parameter at index: 1
It would help us to have the whole trigger.
It seems that you are using the trigger to prevent duplicates. Can you not use a unique constraint for that task, trapping the ORA-00001/DUP_VAL_ON_INDEX exception at the application layer and displaying a nice error message to the user?
I'm guessing this is a BEFORE trigger since as an AFTER you'll probably get the ol' mutating table problem. If it is a BEFORE trigger, the evaluation will need to read IF (cnt >= 1), because as-is, it will only raise the error on the third attempt, not the second.
The error number you use in RAISE_APPLICATION_ERROR needs to fall between -20000 and -20999.
Finally, the error message you pasted here isn't from Oracle. It is a Java/JDBC error complaining about you're not having set up the call to the procedure/function properly, recount the number of IN/OUT parameters in the PL/SQL routine you're calling and make sure there is a matching set statement for each. Remember that functions return a value as well.
-----Original Message-----
From: oracle-l-bounce_at_freelists.org
[mailto:oracle-l-bounce_at_freelists.org]On Behalf Of Lyndon Tiu
Sent: Monday, December 06, 2004 10:23 AM
To: Oracle-L
Subject: Trigger - Missing IN or OUT parameter at index: 1
Hello guys,
Could use some help here.
declare cnt number;
BEGIN
select count(*) into cnt from xdb_record_types where query_by_default =
1 and xdb_layer_type_fk = :new.xdb_layer_type_fk;
if cnt > 1 then
RAISE_APPLICATION_ERROR (
num=> -1, msg=> 'Duplicate query by default for layer fk = ' + :new.xdb_layer_type_fk); end if;
"Missing IN or OUT parameter at index : 1"
Thank you for any suggestions.
--
Lyndon Tiu
--
http://www.freelists.org/webpage/oracle-l
--
http://www.freelists.org/webpage/oracle-l
Received on Mon Dec 06 2004 - 15:15:11 CST
![]() |
![]() |