After insert or update calculate column
question about a table.
I have a table called table1
AFTER data is inserted or updated into the table1
I want to run an update on the same table (table1) with a case statement
update table1
set column2 = case
WHEN column1 = 'abc' THEN 'testl'
WHEN column1 = 'def' THEN 'test2'
ELSE 'test3'
END;
commit;
END;
i cant use a trigger because i get error since the insert would be on same table.
What else can i use for this update ? I cant use a stored procedure that runs daily or something like that because the column2 in the table needs to be populated immediately after an insert or update
thanks for any ideas
SQL> CREATE TABLE TABLE1
2 (
3 COLUMN1 VARCHAR2(10),
4 COLUMN2 VARCHAR2(10)
5 );
Table created.
SQL> CREATE OR REPLACE TRIGGER TRG_TABLE1
2 BEFORE INSERT OR UPDATE OF COLUMN1 ON TABLE1
3 FOR EACH ROW
4 BEGIN
5
6 IF :NEW.COLUMN1 = 'abc' THEN
7 :NEW.COLUMN2 := 'test1';
8 ELSIF :NEW.COLUMN1 = 'def' THEN
9 :NEW.COLUMN2 := 'test2';
10 ELSE
11 :NEW.COLUMN2 := 'test3';
12 END IF;
13
14 END;
15 /
Trigger created.
SQL> INSERT INTO TABLE1(COLUMN1) VALUES('abc');
1 row created.
SQL> SELECT * FROM TABLE1;
COLUMN1 COLUMN2
abc test1
SQL> UPDATE TABLE1 SET COLUMN1 = 'def';
1 row updated.
SQL> SELECT * FROM TABLE1;
COLUMN1 COLUMN2
def test2
SQL>
{code}
Similar Messages
-
SQL merge and after insert or update on ... for each row fires too often?
Hello,
there is a base table, which has a companion history table
- lets say USER_DATA & USER_DATA_HIST.
For each update on USER_DATA there has to be recorded the old condition of the USER_DATA record into the USER_DATA_HIST (insert new record)
- to have the history of changes to USER_DATA.
The first approach was to do the insert for the row trigger:
trigger user_data_tr_aiu after insert or update on user_data for each rowBut the performance was bad, because for a bulk update to USER_DATA, there have been individual inserts per records.
So i tried a trick:
Instead of doing the real insert into USER_DATA_HIST, i collect the USER_DATA_HIST data into a pl/sql collection first.
And later i do a bulk insert for the collection in the USER_DATA_HIST table with stmt trigger:
trigger user_data_tr_ra after insert or update on user_dataBut sometimes i recognize, that the list of entries saved in the pl/sql collection are more than my USER_DATA records being updated.
(BTW, for the update i use SQL merge, because it's driven by another table.)
As there is a uniq tracking_id in USER_DATA record, i could identify, that there are duplicates.
If i sort for the tracking_id and remove duplicate i get exactly the #no of records updated by the SQL merge.
So how comes, that there are duplicates?
I can try to make a sample 'sqlplus' program, but it will take some time.
But maybe somebody knows already about some issues here(?!)
- many thanks!
best regards,
FrankHello
Not sure really. Although it shouldn't take long to do a test case - it only took me 10 mins....
SQL>
SQL> create table USER_DATA
2 ( id number,
3 col1 varchar2(100)
4 )
5 /
Table created.
SQL>
SQL> CREATE TABLE USER_DATA_HIST
2 ( id number,
3 col1 varchar2(100),
4 tmsp timestamp
5 )
6 /
Table created.
SQL>
SQL> CREATE OR REPLACE PACKAGE pkg_audit_user_data
2 IS
3
4 PROCEDURE p_Init;
5
6 PROCEDURE p_Log
7 ( air_UserData IN user_data%ROWTYPE
8 );
9
10 PROCEDURE p_Write;
11 END;
12 /
Package created.
SQL> CREATE OR REPLACE PACKAGE BODY pkg_audit_user_data
2 IS
3
4 TYPE tt_UserData IS TABLE OF user_data_hist%ROWTYPE INDEX BY BINARY_INTEGER;
5
6 pt_UserData tt_UserData;
7
8 PROCEDURE p_Init
9 IS
10
11 BEGIN
12
13
14 IF pt_UserData.COUNT > 0 THEN
15
16 pt_UserData.DELETE;
17
18 END IF;
19
20 END;
21
22 PROCEDURE p_Log
23 ( air_UserData IN user_data%ROWTYPE
24 )
25 IS
26 ln_Idx BINARY_INTEGER;
27
28 BEGIN
29
30 ln_Idx := pt_UserData.COUNT + 1;
31
32 pt_UserData(ln_Idx).id := air_UserData.id;
33 pt_UserData(ln_Idx).col1 := air_UserData.col1;
34 pt_UserData(ln_Idx).tmsp := SYSTIMESTAMP;
35
36 END;
37
38 PROCEDURE p_Write
39 IS
40
41 BEGIN
42
43 FORALL li_Idx IN INDICES OF pt_UserData
44 INSERT
45 INTO
46 user_data_hist
47 VALUES
48 pt_UserData(li_Idx);
49
50 END;
51 END;
52 /
Package body created.
SQL>
SQL> CREATE OR REPLACE TRIGGER preu_s_user_data BEFORE UPDATE ON user_data
2 DECLARE
3
4 BEGIN
5
6 pkg_audit_user_data.p_Init;
7
8 END;
9 /
Trigger created.
SQL> CREATE OR REPLACE TRIGGER preu_r_user_data BEFORE UPDATE ON user_data
2 FOR EACH ROW
3 DECLARE
4
5 lc_Row user_data%ROWTYPE;
6
7 BEGIN
8
9 lc_Row.id := :NEW.id;
10 lc_Row.col1 := :NEW.col1;
11
12 pkg_audit_user_data.p_Log
13 ( lc_Row
14 );
15
16 END;
17 /
Trigger created.
SQL> CREATE OR REPLACE TRIGGER postu_s_user_data AFTER UPDATE ON user_data
2 DECLARE
3
4 BEGIN
5
6 pkg_audit_user_data.p_Write;
7
8 END;
9 /
Trigger created.
SQL>
SQL>
SQL> insert
2 into
3 user_data
4 select
5 rownum,
6 dbms_random.string('u',20)
7 from
8 dual
9 connect by
10 level <=10
11 /
10 rows created.
SQL> select * from user_data
2 /
ID COL1
1 GVZHKXSSJZHUSLLIDQTO
2 QVNXLTGJXFUDUHGYKANI
3 GTVHDCJAXLJFVTFSPFQI
4 CNVEGOTDLZQJJPVUXWYJ
5 FPOTZAWKMWHNOJMMIOKP
6 BZKHAFATQDBUVFBCOSPT
7 LAQAIDVREFJZWIQFUPMP
8 DXFICIPCBCFTPAPKDGZF
9 KKSMMRAQUORRPUBNJFCK
10 GBLTFZJAOPKFZFCQPGYW
10 rows selected.
SQL> select * from user_data_hist
2 /
no rows selected
SQL>
SQL> MERGE
2 INTO
3 user_data a
4 USING
5 ( SELECT
6 rownum + 8 id,
7 dbms_random.string('u',20) col1
8 FROM
9 dual
10 CONNECT BY
11 level <= 10
12 ) b
13 ON (a.id = b.id)
14 WHEN MATCHED THEN
15 UPDATE SET a.col1 = b.col1
16 WHEN NOT MATCHED THEN
17 INSERT(a.id,a.col1)
18 VALUES (b.id,b.col1)
19 /
10 rows merged.
SQL> select * from user_data_hist
2 /
ID COL1 TMSP
9 XGURXHHZGSUKILYQKBNB 05-AUG-11 10.04.15.577989
10 HLVUTUIFBAKGMXBDJTSL 05-AUG-11 10.04.15.578090
SQL> select * from v$version
2 /
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - ProductionHTH
David -
AFTER INSERT OR UPDATE TRIGGER the insert not working
The update works but the insert is not working. I have two version that I have tried. I amd executing the inserts/update from Oracle Applications and the table row is either being inserted or updated correctly.
DROP TRIGGER APPS.CCC_HZ_ORG_CONTACTS_ARU;
CREATE OR REPLACE TRIGGER APPS.CCC_HZ_ORG_CONTACTS_ARU
/* --Created By: SKELLEHER
--Creation Date: 07/15/09
--Last Updated By:
--Last Update Date:
AFTER INSERT OR UPDATE OF department, job_title
ON apps.hz_org_contacts
FOR EACH ROW
WHEN (
NEW.department <> OLD.department OR
NEW.job_title <> OLD.job_title
DECLARE
v_ChangeType VARCHAR2(10);
BEGIN
/* Use 'I' for Insert, 'U'' for Update, and'D' for delete(not part of app at this time). */
IF INSERTING THEN
v_ChangeType := 'INSERT';
ELSIF UPDATING THEN
v_ChangeType := 'UPDATE';
ELSE
v_ChangeType := 'DELETE';
END IF;
INSERT INTO cust.ccc_tca_po_tf_event_tbl
VALUES (ccc_tca_po_tf_event_tbl_s.NEXTVAL
, 'hz_org_contacts'
, v_ChangeType
, 'org_contact_id'
, :NEW.org_contact_id
, 'PENDING'
, NULL
, 0
, 'N'
, 'Y'
, :NEW.LAST_UPDATED_BY
, :NEW.LAST_UPDATE_DATE
, -1
, SYSDATE
, 'DEPARTMENT_JOBTITLE_UPDATE'
,'LDAP'
END;
AND I TRIED ANOTHER VERSION:I have simplified it so it's just checking for insert but it's not picking up. Is the syntax IF INSERTING correct?
CREATE OR REPLACE TRIGGER APPS.CCC_HZ_ORG_CONTACTS_ARU
AFTER INSERT OR UPDATE
ON ar.hz_org_contacts
FOR EACH ROW
DECLARE
BEGIN
IF INSERTING THEN
INSERT INTO cust.ccc_tca_po_tf_event_tbl
VALUES (ccc_tca_po_tf_event_tbl_s.NEXTVAL
, 'hz_org_contacts'
, 'UPDATE'
, 'org_contact_id'
, :NEW.org_contact_id
, 'PENDING'
, NULL
, 0
, 'N'
, 'Y'
, :NEW.LAST_UPDATED_BY
, :NEW.LAST_UPDATE_DATE
, -1
, SYSDATE
, 'DEPARTMENT_JOBTITLE_UPDATE'
,'LDAP'
END IF;
END;
/ -
Before and After insert or update rowcount
Hi
I have several extract objects procs which are calling various build objects procs which in turn are inserting or updating the tables...now when i run these objects sometimes i get no errors and everything seems to be running perfectly but the tables do not get updated ? now what i am trying to achieve here is get some kind of summary where i can see the before and after rowcount..for that i have created a table of every extract object proc and another table with the coressponding tables being updated by tht proc...can anyone pls tell me how should i look into these procs and how do i get the rowcount for a particular table before and after the procedure was run ?
Thanks a lot in advanceHi,
On which version of RDBMS are you working , because if you're on 10g then just enable auditing or even FGA on the tables were you want to see the changes,
Then query the DBA-AUDIT (not sure of the name anymore) view.
If not then create a audit package yourself.
something like
create or replace package pck$audit as
procedure prc$check_tablecount(p_tablename IN VARCHAR2, p_status IN VARCHAR2);
end;
create or replace package body pck$audit as
procedure prc$check_tablecount(p_tablename IN VARCHAR2,p_status IN VARCHAR2) IS
sqlstr VARCHAR2(100);
v_count NUMBER;
begin
sqlstr := 'SELECT COUNT(*) FROM '||p_tablename;
EXECUTE IMMEDIATE sqlstr into v_count; --could by 'using v_count' check syntax for this
INSERT INTO audit_table(table_name,total_count,status,time_stamp)
VALUES(p_tablename,v_count,p_status,SYSTIMESTAMP);
COMMIT;
end;
end;
you can elaborate on this creating additional procedure checking differences in total_count on same table at same time.
Now call this procedure before starting your insert-delete- on your table make sure you put the parameters correct eg p_status => 'begin procedure'
and call it again after your commit in your procedure.
Hope this helps you out
Erwin -
AFTER INSERT OR UPDATE TRIGGER
All of my tables have a dateTime field which is used to track when a record was inserted/updated. I would like a trigger on each table that updates the dateTime field with the current date and time after each insert or update. I keep getting a mutating error and I can't quit wrap my brain around how to fix it. Could anyone provide a example.
I know I am getting the error because I am trying to update the row that is currently being inserted or updated - what is the best way to handle this?
ThanksHi,
A trigger before insert or update is better for your case :
For example :
SQL> desc tab_param
DELAI_RETENTION_FLUX NOT NULL NUMBER(5)
DATE_DEBUT_ALARME NOT NULL DATE
DATE_DEBUT_HITSTORIQUE NOT NULL DATE
NB_FLUX_TOTAL NOT NULL NUMBER(5)
NB_FLUX_PAGE NOT NULL NUMBER(5)
DATE_COL DATE
CREATE OR REPLACE TRIGGER TEST_TRG BEFORE INSERT OR
UPDATE OF DATE_DEBUT_ALARME, DATE_DEBUT_HITSTORIQUE,
DELAI_RETENTION_FLUX, NB_FLUX_PAGE, NB_FLUX_TOTAL
ON TAB_PARAM REFERENCING OLD AS old NEW AS new
FOR EACH ROW
begin
:new.date_col:=sysdate;
end;
Nicolas. -
Capturing value in after insert or update row level trigger
Hi Experts,
I'm working on EBS 11.5.10 and database 11g. I have trigger-A on wip_discrete_jobs table and trigger-B on wip_requirement_operations table.When ever i create discrete job, it inserts record in both wip_discrete_jobs and wip_requirement_operations.
Note:2 tables are like master-child relation.
Trigger-A: After Insert.Row Level trigger on wip_discrete_jobs
Trigger-B:After Insert,Row Level trigger on wip_requirement_operations
In Trigger A:
I'm capturing wip_entity_id and holding in global variable.
package.variable:=:new.wip_entity_id
In Trigger B:
I'm using the above global variable.
Issue: Let's say i have create discrete job,it's wip_entity_id is 27, but the global variable is holding the previous wip_entity_id(26),not current value.It looks like before trigger A event is complete, trigger B is also in process, i think this could be the reason it's not storing the current wip_entity_id in the global variable.
I need your help how to have the current value in the global variable so that i can use that in the trigger B.
Awaiting response at the earliest.
Thanks798616 wrote:
Hi Experts,
I'm working on EBS 11.5.10 and database 11g. I have trigger-A on wip_discrete_jobs table and trigger-B on wip_requirement_operations table.When ever i create discrete job, it inserts record in both wip_discrete_jobs and wip_requirement_operations.
Note:2 tables are like master-child relation.
Trigger-A: After Insert.Row Level trigger on wip_discrete_jobs
Trigger-B:After Insert,Row Level trigger on wip_requirement_operations
In Trigger A:
I'm capturing wip_entity_id and holding in global variable.
package.variable:=:new.wip_entity_id
In Trigger B:
I'm using the above global variable.
Issue: Let's say i have create discrete job,it's wip_entity_id is 27, but the global variable is holding the previous wip_entity_id(26),not current value.It looks like before trigger A event is complete, trigger B is also in process, i think this could be the reason it's not storing the current wip_entity_id in the global variable.
I need your help how to have the current value in the global variable so that i can use that in the trigger B.
Awaiting response at the earliest.
ThanksMy head hurts just thinking about how this is being implemented.
What's stopping you from creating a nice and simple procedure to perform all this magic?
Continue with the global/trigger magic at your own peril, as you can hopefully already see ... nothing good will come from it.
Cheers, -
Need to raise Business Event after insert or updates on a table
Hi All,
Requirement : I have a Custom table in Oracle E-biz (R12 using 11g database), Whenever any row is inserted or updated on this Custom table, I need to log this changes in an audit table and then raise a Business event.
Please suggest which are the best possible options.
I could sense few options like
1. Using Oracle Alerts (Event)
2. Using Triggers
Thanks,
SanthoshThanks for the response.
Let me look into the links which you have sent.
Meanwhile i have few clarifications as given below:
1. If i use triggers, the trigger fires before the transaction is committed.
2. If i use event alerts, i see some delay in the alert firing. I tried creating a separate concurrent program for "Check event alert". But still i dont see any improvement.
Any suggestions on this ..?
Thanks,
Santhosh -
Refreshing the RowSetBrowser webbean after insert/update(?)
How do I refresh the RowSetBrowser web bean after inserting or updating and committing a record thru the EditCurrentRecord web bean?
I am unable to see the new record added in the RowSetBrowser unless I close the browser and re-enter.
Any advice would be appreciated!
nullafter you call to iniatialize() in the DWB, you can refresh the cache by calling
<%
dbw.getRowset().executeQuery();
%> -
Create trigger for after insert update
i have table tt (id number (10), name varchar2(20), status varchar2(1) , stage varchar2(1))
when i insert data in table tt
id name status stage
1 anil a
then trigger fire and update same value of satge to status
like
1 anil a a
pls give exampleHi,
please try this code:
CREATE OR REPLACE TRIGGER <tiggername>
AFTER INSERT OR UPDATE
ON TT
FOR EACH ROW
DECLARE
v_Status varchar2(10);
BEGIN
-- Insert record into audit table
INSERT INTO orders_audit
( id,
name,
stage)
VALUES
( :new.id,
:new.name,
:new.stage);
select stage into v_status
from tt where stage = new.stage
update tt set status = v_status where id = new.id
END; -
ORA-29532 exception from after insert update trigger
Trigger code:
CREATE OR REPLACE TRIGGER SAMS.PERS_ALG_AIU_TRG
AFTER INSERT OR UPDATE
ON PERS_ALG
FOR EACH ROW
DECLARE
trans_type VARCHAR2(1);
event_id CONSTANT VARCHAR2(7) := 'A31_ZA1';
data_src CONSTANT VARCHAR2(15) := 'SI_A31_ZA1_VW';
p_row_id ROWID;
select_stmt VARCHAR2(5000);
XMLString CLOB;
BEGIN
IF INSERTING THEN
trans_type := 'I';
ELSE
trans_type := 'U';
END IF;
SELECT ROWID
INTO p_row_id
FROM personnel
WHERE pers_seq = :new.pers_seq;
select_stmt := 'SELECT * FROM si_a31_ZA1_vw WHERE start_date = MAX(start_date) AND ROW_ID =chartorowid('''||p_row_id||''')';
-- Produce the XML
XMLString := si_lib.get_XML(select_stmt);
-- Insert the transaction
INSERT INTO si_transaction (transaction_type, event_id, status_id, timestamp, transaction_xml)
VALUES ( trans_type, event_id, 'CR', SYSDATE, XMLString);
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20040, sqlerrm);
END;
... is causing ORA-29532 JAVA call terminated by uncaught java exception: java.lang.nullPointerException
any ideas --- get_XML actually calls dbms_xmlquery.getXMLWhen in doubt, break it into pieces and test the pieces. The following is not valid:
SELECT * FROM si_a31_ZA1_vw WHERE start_date = MAX(start_date)
Try replacing the above with:
SELECT * FROM si_a31_ZA1_vw WHERE start_date = (SELECT MAX(start_date) FROM si_a31_ZA1_vw) -
Help me in creating a Trigger for Insert and Update Options
Hi
Please help me in creating a Trigger .
My requirement is that after insert or update on a Table , i want to fire an event .
I have started this way ,but doesn't know how to fully implement this .
say i have a dept table
CREATE TRIGGER DepartmentTrigger
AFTER INSERT ON Dept
BEGIN
INSERT INTO mytable VALUES("123","Kiran");
END DepartmentTrigger;
Please tell me how can i put the Update option also .
Thanks in advance .Please tell me how can i put the Update option also .Add "Or Update". ;-)
Here are a few suggestions, but you definitely need to refer to the manual page that the previous poster suggested.
CREATE OR REPLACE TRIGGER DepartmentTrigger
AFTER INSERT Or Update ON Dept
BEGIN
INSERT INTO mytable VALUES(:new.Dept,'DEPT ADDED OR CHANGED');
END DepartmentTrigger;
The "Or Replace" means you can replace the trigger while you're developing without having to type in a drop statement every time. Just change and rerun your script, over and over until you get it right.
Adding "Or Update" or "Or Delete" makes the trigger fire for those events too. Note, you may want seperate triggers in different scripts and with different names for each event. You have to decide if your design really does the same thing whether it's an insert or an update.
:new.Dept is how you would refer to the changed vale of the Dept column (:old.Dept is the prior value). I changed the double quotes on the string in the VALUES clause to single quotes.
Andy -
Getting the average of two cols into third col when user inserts or updates
I hav a table with three column a,b,c.
now i have to insert the average of the col a & b into c when user inserts or updates
any of the row?
i tried using row level trigger for this but not workin fine..
can anybody of u give me an idea as how to proceed?
thanks in advance..Sorry to be late to reply....
actually..for the trigger i used i got a mutating error.
if there is any other option for doing this,u teel me how.
i used the followin trigger and placed AT to avoid the mutating error.But still
create or replace trigger trg_xyz after insert or update of m1,m2
on xyz for each row
declare
v1 number;
pragma autonomous_transaction;
begin
v1 := (:new.m1+:new.m2)/2;
if inserting then
update set m3=v1 where m2=:new.m2 and m1=:new.m1;
elsif updating then
update set m3=v1 where m2=:new.m2 and m1=:new.m1;
end if;
commit;
end;
this does not throw any error, but doesnt inserts the value.i checked using dbms_output..i showed the average value for v1..but its not updating.. -
"Refresh after" insert fails for DB-View with INSTEAD OF Triggers
Hi,
I have a database view with INSTEAD OF triggers defined for INSERT, UPDATE, DELETE.
For some EO attributes the refresh after insert and update is defined.
Posting to database fails.
According to Database 9.2 Manual and a previous thread (BC4J and Updatable Views the RETURNING clause is not allowed for database views with INSTEAD OF triggers.
Is there a workaround so the refresh after is done, but without the RETURNING feature?
I only need to refresh some values. The PK i can set in the create method of the EO so refresh via a additional SELECT would be possible.
If not Feature Request:
Add the possibility to do the "refresh after ..." with a 2nd SELECT using the PK instead of using the RETURNING clause.
Of course then it is not possible to set the PK in the database trigger. PK has to be set in the create method of the EO.
Thanks,
Markus
GEMS ITHi Markus,
Turning on the stack trace (-Djbo.debugout put=Console - in the Project/runner) did help and I should have done it sooner. Turns out that when I constructed my EO based upon a database view - I should have left out the PKs of the base tables.
In my case, I am using an "Instead Of Trigger" to populate a multi-table arrangement (parent - child - grandChild - greatGrandChild relationship) where all base tables are using dbSequence/dbTriggers.
Final analysis - I would like to see BC4J handle this situation. I do not want to use View-Links and I should * not * have to resort to stored procedures and BC4J/doDML. If I construct a DB View this is participating in an parent - child - grandChild - greatGrandChild relationship that are using dbSequence/dbTriggers, then BC4J should be smart enough to construct VO knowing that I want to do insert, update, delete, selects - based upon this structure.
Thanks Markus,
Bill G... -
After Insert Trigger with DML on the subject table?
I am trying to set up e-mail notifications, so I created a procedure, which accepts the argument of an id. In the procedure, it queries the table and sends out mail based on the result set. (in the trigger, I pass in the value of :NEW.id). The procedure then queries the table for that row id.
First, for the after update I was getting the error:
ORA-04091: table is mutating, trigger/function may not see it ORA-06512
So, I was advised to do in the declare block: pragma autonomous_transaction; I did that, and that solved the problem there. SO I did the same in the after insert trigger, but then I get the error:
ORA-00060: deadlock detected while waiting for resource ORA-06512
I asked our DBA and he said you are not able to query the table of which the trigger is a subject of. I thought it would be possible since its After insert or update?
Can anyone offer any suggestions ? :)
Thanks,
TrentAny reason why it would work in an after update trigger then?
So, I was advised to do in the declare block: pragma autonomous_transaction; I did that, and that solved the problem therePRAGMA AUTONOMOUS_TRANSACTION "bends" the restriction against SQL against base table.
It is the equivalent to tap dancing across a mine field.
You might get the desired results most of the time or you might get a tasty surprise when you least expect it.
What happens to your application in the future, if/when the UPDATE has a ROLLBACK issued & PRAGMA AUTONOMOUS_TRANSACTION has successfully completed?
Inquiring minds would like to know the answer. -
ORA-01461: can bind a LONG value only for insert into a LONG column-Update
Hi,
I'm using Oracle 9.2 with Weblogic 8 server. There are two columns OBJ_EVIDENCE_COMP - varchar2(4000 bytes), Descriptiion - varchar2(4000 bytes) in a table.I'm getting the Data from that table and again I'm updating into the same table with same data after updating the Data object in java.
I am getting the following error
"Java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column"
Can some one let me know why this error occurs ? Please do let me know if you want any other information. Below is my SQL Query:
* @jc:sql statement::
* UPDATE CORRECTIVE_ACTION SET
* CA_ID = {dt.caId},
* CA_NBR = {dt.caNbr},
* CAPA_PLAN_ID = {dt.capaPlanId},
* OBJ_EVIDENCE_COMP = {dt.objEvidenceComp},
* APPLICABLE_ELSE_WHERE = {dt.applicableElseWhere},
* JUSTIFICATION = {dt.justification},
* MOE = {dt.moe},
* COMPLETION_DATE = {dt.completionDate},
* EXTENSION_DUE_DATE = {dt.extensionDueDate},
* STATUS_CD = {dt.statusCd},
* SYSTEM_STATUS_CD = {dt.systemStatusCd},
* ROOT_CAUSE_CD = {dt.rootCauseCd},
* DESCRIPTION = {dt.description},
* CA_TYPE = {dt.caType},
* CREATED_BY = {dt.createdBy},
* CREATED_DATE = {dt.createdDate},
* MODIFIED_BY = {dt.modifiedBy},
* MODIFIED_DATE = {dt.modifiedDate},
* COMPLETION_DUE_DATE = {dt.completionDueDate}
* WHERE CA_ID = {dt.caId}
In the above update statement if i remove one among the 2 columns mentioned then it is getting updated properly......
Regards,
Bharat
Edited by: 908508 on Jan 17, 2012 2:18 AMI am occasionally getting this error in an Oracle 11g database
I use Rogue Wave to insert:
connection.beginTransaction ("bulkInsertEvents");
RWDBTBuffer <RWCString> symbols (symbol, rowCount);
RWDBTBuffer <RWDateTime> timeStamps (timeStamp, rowCount);
RWDBTBuffer <int> eventCounts (eventCount, rowCount);
RWDBTBuffer <RWCString> events (event, rowCount);
RWDBBulkInserter ins = table.bulkInserter (connection);
ins << symbols << timeStamps << eventCounts << events;
ins.execute ();
connection.commitTransaction ("bulkInsertEvents");
catch (RWxmsg & exception)
cout << Logging::getProgramName () << " " << exception.why () << endl;
throw "Failed to do bulk insert events to DBTools.";
Some of the inserts give me
"[SERVERERROR] ORA-01461: can bind a LONG value only for insert into a LONG column"
the table structure is
SYMBOL VARCHAR2(33 BYTE)
DATEANDTIME TIMESTAMP(6)
NUMOFEVENTS NUMBER
EVENTS VARCHAR2(4000 BYTE)
Maybe you are looking for
-
Can iPod shuffle be used with any FM recivers for car listening?
Can my iPod Shuffle be used with any FM receivers so that I can listen to songs through my car radio? I know Alot of FM recievers say that they are compatable with variouse mp3 players. I just want to know if I can plug in my Ipod shuffle to any of t
-
Informix 4GL to Oracle PL/SQL
Is there any tool available to convert Informix 4GL Code to Oracle Packages/Procedures/Functions ? Can you pls help us out on this? Thanks and Regards Sundar
-
About creating a composite picture
I used the Quick Selection Tool in CS3 to isolate a portion of a photo. I then copied the isolated selection and pasted it into a second photo. It looks great except for one thing...... there is a very thin bluish border or edge to the selection I co
-
Prompting for user input in nested select statements
I recently rewrote a query to use a nested select statement instead of specifying every SELECT field on the GROUP BY line. Here's the query which works perfectly with hard-coded values of '030', '01/01/11', and '12/31/11'. SELECT T0.[CardName] AS Cu
-
"Error Connecting to the server" What do i do?
Whenever i try to log in, a widow appears like this: apparently there is an error with registration. What should i do? I have tried this with many apple ID accounts and it doesnt work. The same occurs with my game center log in and face time as well.