Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Error while writing trigger in Oracle Enterprise Manager Console

Posted on 2008-10-14
11
1,365 Views
Last Modified: 2013-12-18
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
Comment
Question by:PopoDi
  • 6
  • 4
11 Comments
 
LVL 7

Expert Comment

by:Dr_Billy
ID: 22711997
can you post the code of the trigger ?
0
 

Author Comment

by:PopoDi
ID: 22712049
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
 
LVL 2

Expert Comment

by:WallaceAdrian
ID: 22712362
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
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 

Author Comment

by:PopoDi
ID: 22712434
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
 
LVL 2

Accepted Solution

by:
WallaceAdrian earned 500 total points
ID: 22712544
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
 

Author Comment

by:PopoDi
ID: 22712617
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
 
LVL 2

Expert Comment

by:WallaceAdrian
ID: 22712692
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
 

Author Comment

by:PopoDi
ID: 22712883
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
 
LVL 2

Expert Comment

by:WallaceAdrian
ID: 22718837
The procedure is updating table1. I'm not sure what you mean about dropping the 3 columns?
0
 

Author Comment

by:PopoDi
ID: 22724379
oh sorry, I meant last 3 lines of code (I did not even realize I wrote columns). :)
thanks!
0
 

Author Closing Comment

by:PopoDi
ID: 31505927
As you said, using a different interface solved the problem.
0

Featured Post

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I remember the day when someone asked me to create a user for an application developement. The user should be able to create views and materialized views and, so, I used the following syntax: (CODE) This way, I guessed, I would ensure that use…
Background In several of the companies I have worked for, I noticed that corporate reporting is off loaded from the production database and done mainly on a clone database which needs to be kept up to date daily by various means, be it a logical…
This video shows how to copy a database user from one database to another user DBMS_METADATA.  It also shows how to copy a user's permissions and discusses password hash differences between Oracle 10g and 11g.
This video shows information on the Oracle Data Dictionary, starting with the Oracle documentation, explaining the different types of Data Dictionary views available by group and permissions as well as giving examples on how to retrieve data from th…

829 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question