• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1398
  • Last Modified:

Error while writing trigger in Oracle Enterprise Manager Console

Hi,

I am using Oracle Enterprise Manager to write a trigger, but get "Missing in or out parameters at index:: 1" everytime that I want to use :new or :old. I looked around on the internet and it seems to be either a bind variable problem or using preparedStatement instead of Statement problem, but I have no idea how I can use that in Enterprise Manager Console. Does anyone know what I can do to get the Enterprise Manager to accept :new and :old for what they are?
0
PopoDi
Asked:
PopoDi
  • 6
  • 4
1 Solution
 
Dr_BillyCommented:
can you post the code of the trigger ?
0
 
PopoDiAuthor Commented:
Hi Dr. Billy,

this is one of the variations that I tried (it really does not matter what I do inside the trigger, the missing parameter error comes out as soon as I use the semicolon for NEW or OLD inside the "trigger body" window):

CREATE OR REPLACE TRIGGER "TEST"."PR_UPDATE" AFTER
UPDATE OF "PSZ" ON "TEST"."TABLE1" FOR EACH ROW BEGIN

var1 VARCHAR2(10)

var1 := :OLD.KEYTAG

INSERT INTO REVTRACK (KEYTAG, CHGCOL)
VALUES ( var1, 'PSZ');
END;


0
 
WallaceAdrianCommented:
This should do it.

CREATE OR REPLACE TRIGGER TEST.PR_UPDATE AFTER
UPDATE OF PSZ ON TEST.TABLE1 FOR EACH ROW
DECLARE
var1 VARCHAR2(10);
BEGIN
var1 := :OLD.KEYTAG;
INSERT INTO REVTRACK (KEYTAG, CHGCOL)
VALUES ( var1, 'PSZ');
END;
0
Cloud Class® Course: Amazon Web Services - Basic

Are you thinking about creating an Amazon Web Services account for your business? Not sure where to start? In this course you’ll get an overview of the history of AWS and take a tour of their user interface.

 
PopoDiAuthor Commented:
Hi WallaceAdrian,

I still get the same error about a missing index (attached jpeg file).

Apparently it has to do with variable binding for :OLD (or :NEW) and I don't know how to get around it in Enterprise Manager (I've seen one solution for sql saying to use Statement instead of PreparedStatement, but I don't know how this could be done through Enterprise Manager interface either - I am very new to this) .

Thanks!
errormsg.JPG
0
 
WallaceAdrianCommented:
Have you tried creating the trigger in SQLPLUS?

The easiest way is to create a script file with your create statement (i.e. create_trigger.sql)

Connect to the database in sqlplus and execute

@create_trigger.sql
0
 
PopoDiAuthor Commented:
Hi WallaceAdrian,

I only have Enterprise Manager.
Is there a way of getting the values from the record without using :NEW or :OLD (like a function call or something)?

Thanks!
0
 
WallaceAdrianCommented:
You should have the sqlplus.exe in your oracle bin folder.

You could use a stored procedure to record the changes before updating the table.

procedure update_table1(i_table1 in table1%rowtype) is
begin
  INSERT INTO REVTRACK (KEYTAG, CHGCOL)
  VALUES ( i_table1.psz, 'PSZ');
  update table1
  set row = i_table1
  where pk = i_table1.pk;
end;
0
 
PopoDiAuthor Commented:
well oracle is definitely not my forte. :) This is the first time I'm doing anything with it.

what I am trying to do is update the REVTRACK table whenever a table1.psz is changed - I want to add table1.keytag into revtrack.keytag and concatenate 'psz' into the revtrack.chgcol (what I posted above does not concatenate yet).

So in your stored procedure, you are updating table1, right? Would I just drop the 3 columns to adapt it to what I want?
0
 
WallaceAdrianCommented:
The procedure is updating table1. I'm not sure what you mean about dropping the 3 columns?
0
 
PopoDiAuthor Commented:
oh sorry, I meant last 3 lines of code (I did not even realize I wrote columns). :)
thanks!
0
 
PopoDiAuthor Commented:
As you said, using a different interface solved the problem.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Introducing Cloud Class® training courses

Tech changes fast. You can learn faster. That’s why we’re bringing professional training courses to Experts Exchange. With a subscription, you can access all the Cloud Class® courses to expand your education, prep for certifications, and get top-notch instructions.

  • 6
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now