Bad bind variable error on creating trigger
hi
im trying to create a trigger on a table in Oracle and I keep gettin this error:
PLS-00049: bad bind variable 'NEW.ID'
TeamID is a primary Key, it creates the sequence fine, but i get the error on the create trigger,
CREATE TABLE TBLTEAMS
TEAMID NUMBER(5),
NAME VARCHAR2(50 BYTE),
MANAGER VARCHAR2(50 BYTE),
COSTCENTRE NUMBER(9),
PARENTTEAMID NUMBER(5)
create sequence seq_Teamsautonumber;
create trigger trg_Teamsautonumber
before insert on tblteams
for each row
begin
select seq_Teamsautonumber.nextval into :new.id from dual;
end;
any ideas?
You have said
:new.idthat means you are trying to load the sequence value into a column that doesn't exist in your table.
you would need to use
:new.teamidAssuming you are trying to auto-populate the TEAMID column on your table.
Similar Messages
-
Getting a bad bind variable error while compiling a custom form in R12
Hi,
I am getting a bad bind variable error while compiling a custom form.
I tried setting the forms_path variable and I am still getting the error. Can anyone please suggest what can be done?
DECLARE
BEGIN
IF :parameter.p_line_ship_to = 'T'
THEN
IF :SYSTEM.cursor_item = 'LINE.SHIP_TO'
THEN
:parameter.lov_num_param1 := :line.ship_to_customer_id;
oe_lines.ship_to ('WHEN-VALIDATE-ITEM');
:parameter.lov_num_param1 := :line.ship_to_customer_id;
END IF;
:parameter.p_line_ship_to := 'F';
END IF;
END;
I am getting this error:
Bad bind variable 'parameter.p_line_ship_to'The Parameter is not defined in the form.. But, this form is already been compiled and deployed.. I have to make some changes to the form and tried to compile it, when i am getting this error. Is it possible that the parameter would be defined in some other form or can this error be due to some other reasons?
Thanks in Advance. -
PLS-00049: bad bind variable 'NEW.ID' on trigger
Hi guys, I am using Oracle SQL Developer version 2.1.1.64 and having the sql statement like below
CREATE TABLE Zipcodes
zipcode_id NUMBER(10),
zipcode VARCHAR2(10),
district_id NUMBER(10),
PRIMARY KEY(zipcode_id)
CREATE SEQUENCE ZIPCODE_ID_SEQ START WITH 1 INCREMENT BY 1;
CREATE OR REPLACE TRIGGER ZIPCODE_TRIGGER
BEFORE INSERT
ON ZIPCODES
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
SELECT ZIPCODE_ID_SEQ.NEXTVAL INTO :NEW.ZIPCODE_ID FROM DUAL;
END;
And I got errors:
Error(2,40): PLS-00049: bad bind variable 'NEW.ID'
Error(4,5): PL/SQL: Statement ignored
Error(4,39): PLS-00357: Table,View Or Sequence reference 'ZIPCODE_ID_SEQ.NEXTVAL' not allowed in this context
Error(2,36): PLS-00049: bad bind variable 'NEW.ID'
Error(2,2): PL/SQL: SQL Statement ignored
Error(2,9): PL/SQL: ORA-02289: sequence does not exist
Error(5,1): PLS-00103: Encountered the symbol "SHOW"
Firstly, I dont even have the "SHOW" key world in my syntax.
What is it happening ?
Thank you in advance.Hi,
954390 wrote:
Hi guys, I am using Oracle SQL Developer version 2.1.1.64 Thanks; that could be useful information. Even more important is your database version (e.g. 11.2.0.2.0)
and having the sql statement like below
CREATE TABLE Zipcodes
zipcode_id NUMBER(10),
zipcode VARCHAR2(10),
district_id NUMBER(10),
PRIMARY KEY(zipcode_id)
)Don't you need a semicolin or a slash after the CREATE TABLE statement?
CREATE SEQUENCE ZIPCODE_ID_SEQ START WITH 1 INCREMENT BY 1;Did you get a message like "Sequence created" at this point?
CREATE OR REPLACE TRIGGER ZIPCODE_TRIGGER
BEFORE INSERT
ON ZIPCODES
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
SELECT ZIPCODE_ID_SEQ.NEXTVAL INTO :NEW.ZIPCODE_ID FROM DUAL;
END;
And I got errors:
Error(2,40): PLS-00049: bad bind variable 'NEW.ID'
Error(4,5): PL/SQL: Statement ignored
Error(4,39): PLS-00357: Table,View Or Sequence reference 'ZIPCODE_ID_SEQ.NEXTVAL' not allowed in this context
Error(2,36): PLS-00049: bad bind variable 'NEW.ID'
Error(2,2): PL/SQL: SQL Statement ignored
Error(2,9): PL/SQL: ORA-02289: sequence does not exist
Error(5,1): PLS-00103: Encountered the symbol "SHOW"
Firstly, I dont even have the "SHOW" key world in my syntax.
What is it happening ?You don't have anything like NEW.ID, either.
Also, the line numbers in error messages for triggers start with the first DECLARE or BEGIN statement, so this trigger only has 3 lines, yet you're getting line numbers up to 5 in the error messages.
That trigger works fine for me in SQL*Plus (database 10.2.0.1.0).
Are you sure you're showing the complete script, exactly what you're running? If you had some syntax error before the CREATE OR REPLACE TRIGGER statement, that might possibly account for the parser getting confused.
Does your code work in SQL*Plus? -
Hi all,
I have this code in a PB trigger:
declare
v_alert_button number;
invalid BOOLEAN;
CURSOR C_REFNO_SEARCH IS
SELECT * FROM REFNO_LIB.REFNO_02000_IDENT
WHERE CAGECDXH = :CONTROL.C_CAGECDXH AND
REFNUMHA = :CONTROL.C_REFNUMHA;
BEGIN
OPEN C_REFNO_SEARCH;
FETCH C_REFNO_SEARCH INTO :REFNO_02000_IDENT;
invalid := C_REFNO_SEARCH%NOTFOUND;
IF invalid then
V_ALERT_BUTTON := SHOW_ALERT('REFNUM_NOT_FOUND');
END IF;
CLOSE C_REFNO_SEARCH;
REDISPLAY;
END;
I can't compile this trigger code cleanly. I get a error on the FETCH statment pointing to ":REFNO_02000_IDENT" as a bad bind variable. I'm trying to populate the ":REFNO_02000-IDENT" data block without having to key in over 50 items that are in the block.
Any help is appreciated.
ThanksIt's not possible what you want. I guess you have to key in the items. Forms tries to find the item :REFNO_02000_IDENT and can't find it becuase it doesn't exist. Thats why you get bad bind variable.
-
CG$CTRL Bad Bind Variable error Migrating from Forms 4.5 to Forms 6
Hi All,
I have an old application deployed using Forms 4.5 runtime that I would like to migrate to the latest version of Forms.
My intended migration path was Forms 4.5 -> Forms 6i -> Forms 10g.
After successfully converting the source 4.5 .pll library files to Forms 6i by opening the files in the Forms 6i Forms Builder (6.0.8.25) and then saving the library files in the FORMS60_PATH I now encounter the following error that is hindering the migration process:
Error 49 at line 6, column 3
bad bind variable 'CG$CTRL.SE_CODE'
I have read some other posts that mention Headstart Templates. Does anyone know if these CG$xxxx program units are part of Headstart? And if so, how can I get the Template files?
Thanks in advance,
Gary.CG$CTRL are cerated when the forms are developed using the designer...
Oracle Forms requires that every item in a form must belong to a block, but these generated non-base table items are not associated with any module component. There is therefore no repository definition of a data block to which the generated items can belong.
Form Generator resolves this situation by creating a control block to which the generated non-base table items can belong. The generated block is given the name CG$CTRL.
The CG$CTRL block has no physical representation in the generated form and has none of the properties (e.g. block decoration) associated with generated data blocks. The CG$CTRL block is simply a logical object to which generated
So try to find out in which form the above procedure /program unit is being called and then modify the pll accordingly....
Rajesh Alex -
'Error 49 bad bind variable' error message.
When I copied a form that has been working from our Linux server to my PC and compiled it, I received many error messages like this in several procedures, functions and triggers:
“Error 49 at line 69, column 10, bad bind variable ‘edit_Dealer.corporation’
Does anybody know why this is? As I said, the app works for the end user from the Linux server.
Thank You.Does the form you copied have any attached libraries or subclassed objects? If so, did you copy the Library and Object source files to your PC as well? If you copied these supporting files already, are they in a directory location that is part of your FORMS_PATH?
Hope this helps,
Craig B-)
If someone's response is helpful or correct, please mark it accordingly. -
Bad bind variable in a db trigger
Hello,
i want whenever updating on INSP_YEARLY_PLAN to be updating on the other table INSP_DAILY_SCHEDULE.
But, Got the following error
CREATE OR REPLACE TRIGGER UPDATE_SCHEDULE_YEARLY_PLAN
AFTER UPDATE ON INSP_YEARLY_PLAN
FOR EACH ROW
DECLARE
V_SCDEDULE_ID NUMBER(11);
BEGIN
UPDATE INSP_DAILY_SCHEDULE
SET YEARLY_PLAN_ID =:OLD.YEARLY_PLAN_ID ,
INSPECTION_ID =:OLD.YEARLY_PLAN_ID ,
EQUIPMENT_ID = :OLD.EQUIPMENT_ID ,
INSPECTION_FROM_DATE = :OLD.INSPECTION_FROM_DATE ,
INSPECTION_TO_DATE =:OLD.INSPECTION_TO_DATE
WHERE SCDEDULE_ID =:NEW.SCDEDULE_ID;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END SCHEDULE_YEARLY_PLAN ;
/Any Suggestion pls.
Regards,
Abdetu..SCDEDULE_ID cause i don't create it it's like that in db ...You may want to check - is the column "SCDEDULE_ID" present in both the tables - "INSP_YEARLY_PLAN" as well as "INSP_DAILY_SCHEDULE" ?
I'd guess that the column "SCDEDULE_ID" either :
(a) does not exist in at least one of the two tables, or
(b) is spelled as "SCHEDULE_ID" (or something other than "SCDEDULE_ID") in either.
isotope -
Bad bind variable error in oracle forms 10g
i have a created a table in oracle database 10g
create table myimage(image_id number, image_name BLOB);
i want insert an image and retrieve an image through programing(don't want block level) in oracle forms 10g
without using java beans(and finely working in both windows XP2 and Solaries)
how can i do this please can anybody give me the source code to do this because i am new in oracle forms.
i need a immediate replay to this answer why because i have urgent requirement on this in my web erp projectYou can use WEBUTIL to do so, but
without using java beans(and finely working in both windows XP2 and Solaries)WEBUTIL also contains javabean. I don't know why you have this restriction, i'd say you won't succeed without any java-bean. -
please help. I get the below error.
[Error] PLS-00049 (12: 13): PLS-00049: bad bind variable 'NEW.PUBLICATION_DT'
[Error] PLS-00049 (16: 12): PLS-00049: bad bind variable 'OLD.PUBLICATION_DT'
[Error] PLS-00049 (16: 45): PLS-00049: bad bind variable 'NEW.PUBLICATION_DT'
CREATE TABLE PROPOSAL
PROPOSAL_ID NUMBER(18) NOT NULL,
PUBLICATION_DT TIMESTAMP(6),
WORKFLOWPHASE_ID NUMBER(18),
CREATE OR REPLACE TRIGGER TRG_FOR_PROJECT_WORKFLOW
BEFORE INSERT
OR UPDATE
ON PROJECT
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
WHEN (OLD.WORKFLOWPHASE_ID = '15')
BEGIN
If INSERTING THEN
If :NEW.PUBLICATION_DT IS NOT NULL THEN
:NEW.WORKFLOWPHASE_ID := '17';
END IF;
ELSIF UPDATING THEN
If :OLD.PUBLICATION_DT IS NULL AND :NEW.PUBLICATION_DT IS NOT NULL THEN
:NEW.WORKFLOWPHASE_ID := '17';
End If;
END IF;
END;Hi,
Please correct the below
1)The table script you've provided has some errors
2)The trigger you are trying to create is on 'PROJECT' ,I believe it should be on 'PROPOSAL' -
Bad bind variable & best practice for delete
I am working with three tables and very new to SQL. I need to create a procedure that will accept an ID and go through two sub tables and delete child records. Item is the main table. I am passing in the ID into the procedure and I want to use it as below. I keep getting a bad bind variable error message. I have verified that the table is setup as a number and my procedure accepts a number. I also want someone to review this from best practice as I am new to procedures.
PROCEDURE DeleteItem (p_ItemID IN NUMBER, p_RowsAffected OUT number)
IS
p_RowsAffected NUMBER;
-- select the itemdetail for the analysis
CURSOR c_itemdetail
IS
SELECT
itemdetailid
FROM itemDETAIL
WHERE itemid = :p_ItemID;
BEGIN
-- loop through each itemdetail and delete the itemdetailoutlay
FOR r_itemdetail IN c_itemdetail
LOOP
BEGIN
DELETE FROM ITEMDETAILOUTLAY
WHERE itemdetailid = r_itemdetail.itemdetailid;
COMMIT;
END;
END LOOP;
-- delete the itemdetail
BEGIN
DELETE FROM ITEMDETAIL
WHERE itemid = :p_ItemID;
COMMIT;
END;
-- delete the main item
BEGIN
DELETE FROM ITEM
WHERE itemdid = :p_ItemID;
COMMIT;
p_RowsAffected := SQL%ROWCOUNT;
END;
END DeleteItem;Hi,
Welcome to the forum!
As you may notice, this site normally compresses white-space. Whenever you post code, or any formatted text, on this site, type these 6 characters:
\(small letters only, inside curly brackets) before and after each section of formatted text, to preserve spacing.
I don't think you mean to use bind variables anywhere, so don't use colons before any variable names. You were doing this correctly with p_RowsAffected; do the same thing with p_ItemID.
Try this:PROCEDURE DeleteItem (p_ItemID IN NUMBER, p_RowsAffected OUT number)
IS
-- p_RowsAffected NUMBER; -- Don't name local variables the same as arguments
-- select the itemdetail for the analysis
CURSOR c_itemdetail
IS
SELECT
itemdetailid
FROM itemDETAIL
WHERE itemid = p_ItemID; -- No : before p_ItemID
BEGIN
-- loop through each itemdetail and delete the itemdetailoutlay
FOR r_itemdetail IN c_itemdetail
LOOP
BEGIN
DELETE FROM ITEMDETAILOUTLAY
WHERE itemdetailid = r_itemdetail.itemdetailid;
COMMIT;
END;
END LOOP;
-- delete the itemdetail
BEGIN
DELETE FROM ITEMDETAIL
WHERE itemid = p_ItemID; -- No : before p_ItemID
COMMIT;
END;
-- delete the main item
BEGIN
DELETE FROM ITEM
WHERE itemdid = p_ItemID; -- No : before p_ItemID
COMMIT;
p_RowsAffected := SQL%ROWCOUNT;
END;
END DeleteItem;
The most important "best practice" with PL/SQL is to avoid doing it whenever possible.
If SQL offers a way o do the same thing, it's usally best not to code anything in PL/SQL.
Have you considered foreign key constraints, with "ON DELETE CASCADE"? That way, you could simply "DELETE FROM item", and all the dependent rows in the other tables would automatically be deleted. You wouldn't need to remember to call a procedure like this; in fact, you would have no need for a procedure like this.
Given that you do have such a procedure:
You're doing row-by-row processing, which some mad wags like to call "slow-by-slow" processing.
For example, iYou're xplicitly finding each ItemDetailID separately, and deleting each one separately, like this:... CURSOR c_itemdetail
IS
SELECT
itemdetailid
FROM itemDETAIL
WHERE itemid = p_ItemID;
-- loop through each itemdetail and delete the itemdetailoutlay
FOR r_itemdetail IN c_itemdetail
LOOP
BEGIN
DELETE FROM ITEMDETAILOUTLAY
WHERE itemdetailid = r_itemdetail.itemdetailid;
COMMIT;
END;
END LOOP;
It's more efficient for the system (and less coding for you) if you let SQL handle as much as possible, so do this instead... DELETE FROM ItemDetailOutlay
WHERE ItemDetailID IN
( SELECT itemdetailid
FROM itemDETAIL
WHERE itemid = p_ItemID
Do you really want to COMMIT 3 times? 0 or 1 times might be better.
What happens if there is some kind of error, say, after you've delete rows form ItemDetailOutlay and ItemDetail, but before you've delete from Item? Wouldn't you want the entire transaction to fail, and leave all three tables in a consistent state? If so, either have the calling procedure COMMIT, or have a single COMMIT at the end of DelteItem.
Edited by: Frank Kulash on May 6, 2010 2:25 PM -
Error in trigger: PLS-00049: bad bind variable
Hi,
I am trying one of the XML/XDK samples from technet (http://otn.oracle.com/tech/xml/htdocs/XDBDemo2.html) and get this error while compiling the trigger: here's the code snippet
create or replace trigger PURCHASEORDEREXPLOSION
instead of insert on NEWPURCHASEORDER
for each row
declare
begin
DOCUMENT := :new.PODOCUMENT; <--Error here: PLS-00049: bad bind variable 'NEW.PODOCUMENT'
I can't understand why is this happening? Any clues??
Thanks!
-RajeevYou don't specify bind variables with the colon ":" prefix in PL/SQL.
The procedure you posted builds a query using string concatenation. Even if you remove the colon from your variable name you still won't be using bind variables.
If you want to use bind variables you should consider doing the following:
1. Use the DBMS_SQL package.
2. Use EXECUTE IMMEDIATE with the USING clause.
3. Use OPEN <REF CURSOR> FOR <STATEMENT> with the USING clause.
Each one has different advantages/disadvantages.
If looks as if you want to pass in a dynamic IN list. If you use bind variables it will effectively treat the entire list as ONE value enclosed in single quotes. If you truly want a dynamic IN list you need to investigate another method.
Tom Kyte has some information on Dynamic IN lists here: [How can I do a variable in list?|http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:210612357425] -
TRIGGER ERROR: bad bind variable
Hello,
I'm just starting off with oracle and am trying to do the same as auto_increment in mysql is doing by creating this sequence and trigger, but on the trigger I am getting the following error:
error:
PLS-00049: bad bind variable 'TAKEOVER_USERS.TAKEOVER_UID'This is the code for trigger, table and sequence:
trigger:
CREATE OR REPLACE TRIGGER "TAKEOVER_USERS_T1"
BEFORE
insert on "TAKEOVER_USERS"
for each row
begin
select TAKEOVER_UID.nextval into :takeover_users.TAKEOVER_UID from dual;
end;Table:
CREATE TABLE "TAKEOVER_USERS"
( "TAKEOVER_UID" NUMBER NOT NULL ENABLE,
"TAKEOVER_FBID" VARCHAR2(20) NOT NULL ENABLE,
"takeover_accepted_terms" NUMBER(1,1) NOT NULL ENABLE,
"takeover_lastName" VARCHAR2(30),
"takeover_firstName" VARCHAR2(30),
"takeover_country" VARCHAR2(40),
"takeover_session" VARCHAR2(50) NOT NULL ENABLE,
"takeover_created" TIMESTAMP (6) NOT NULL ENABLE,
CONSTRAINT "takeover_users_PK" PRIMARY KEY ("TAKEOVER_UID") ENABLE
)sequence:
CREATE SEQUENCE "TAKEOVER_UID" MINVALUE 1 MAXVALUE 99999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLEYou got any idea what I need to change to make this work?
Thanks!
Christineif your DB is 11g you can try this
CREATE OR REPLACE TRIGGER "TAKEOVER_USERS_T1"
BEFORE
insert on "TAKEOVER_USERS"
for each row
begin
:NEW.TAKEOVER_UID:=TAKEOVER_UID.nextval;
end;if 10g or older..
CREATE OR REPLACE TRIGGER "TAKEOVER_USERS_T1"
BEFORE
insert on "TAKEOVER_USERS"
for each ROW
BEGIN
SELECT TAKEOVER_UID.NEXTVAL INTO :NEW.TAKEOVER_UID FROM dual;
end;Regards,
Prazy -
PLS-00049 error :bad bind variable
We recently migrated our dev databse to 10g
for the following table the trigger is erroring out as follows :
The same trigger works in 9i production though .Can anyone see anything that might be amiss
CREATE TABLE ARCH_CLAIM_REJECTION_CODES
REJECTION_ID NUMBER(38) NOT NULL,
REJECTION_DESC VARCHAR2(600 BYTE),
DT_STAMP NUMBER,
DT_CREATED DATE,
DT_LAST_UPDATED DATE
INSERT INTO CLAIM VALUES (
:OLD.REJECTION_ID,
:OLD.REJECTION_DESC,
:OLD.DT_STAMP,
:OLD.DT_LAST_UPDATED,
:OLD.DT_CREATED
PLS-00049: bad bind variable 'OLD.REJECTION_ID'
PLS-00049: bad bind variable 'OLD.REJECTION_DESC'
PLS-00049: bad bind variable 'OLD.DT_STAMP'
PLS-00049: bad bind variable 'OLD.DT_LAST_UPDATED'
PLS-00049: bad bind variable 'OLD.DT_CREATED'REATE OR REPLACE TRIGGER ODSLIVE.TR_CLAIM_REJECTION_CODES_BUR
BEFORE UPDATE ON CLAIM_REJECTION_CODES
FOR EACH ROW
DECLARE
gv_errcode VARCHAR2(100);
gv_errmsg VARCHAR2(100);
BEGIN
--DBMS_OUTPUT.PUT_LINE('TRIGGER CALLED FOR CLAIM_REJECTION_CODES');
INSERT INTO ARCH_CLAIM_REJECTION_CODES VALUES (
:OLD.REJECTION_ID,
:OLD.REJECTION_DESC,
:OLD.DT_STAMP,
:OLD.DT_LAST_UPDATED,
:OLD.DT_CREATED
EXCEPTION
WHEN OTHERS THEN
gv_errcode :=SQLCODE;
gv_errmsg :=SQLERRM;
PKG_COMMONACTIVITIES.PR_ERRORLOG_DETAILS('TRIG-01-0001',
gv_errcode,
gv_errmsg,
'TR_CLAIM_REJECTION_CODES_BUR',
'CLAIM_REJECTION_CODES');
--DBMS_OUTPUT.PUT_LINE('TM-01-0001 '||'TR_CLAIM_REJECTION_CODES_BUR '||'CLAIM_REJECTION_CODES'||gv_errmsg);
--RAISE;
END TR_CLAIM_REJECTION_CODES_BUR; -
What's wrong with this script
desc psaudit;
Name Type
AUDIT_OPRID VARCHAR2(30)
AUDIT_STAMP DATE
AUDIT_ACTN VARCHAR2(1)
RECNAME VARCHAR2(15)
FIELDNAME VARCHAR2(18)
OLDVALUE VARCHAR2(65)
NEWVALUE VARCHAR2(65)
KEY1 VARCHAR2(65)
KEY2 VARCHAR2(65)
KEY3 VARCHAR2(65)
KEY4 VARCHAR2(65)
KEY5 VARCHAR2(65)
KEY6 VARCHAR2(65)
KEY7 VARCHAR2(65)
KEY8 VARCHAR2(65)
KEY9 VARCHAR2(65)
KEY10 VARCHAR2(65)
KEY11 VARCHAR2(65)
KEY12 VARCHAR2(65)
KEY13 VARCHAR2(65)
KEY14 VARCHAR2(65)
KEY15 VARCHAR2(65)
22 rows selected
CREATE OR REPLACE TRIGGER JOB_TR
AFTER INSERT OR UPDATE OR DELETE ON PS_JOB_BT
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
V_AUDIT_OPRID VARCHAR2(64);
BEGIN
DBMS_APPLICATION_INFO.READ_CLIENT_INFO(V_AUDIT_OPRID);
IF :OLD.RECNAME IS NULL
THEN
INSERT INTO PSAUDITWRK
VALUES (GET_PS_OPRID(V_AUDIT_OPRID),SYSDATE,'I',:NEWRECNAME,:NEWFIELDNAME,:NEWOLDVALUE,:NEWNEWVALUE,:NEWKEY1,:NEWKEY2,:NEWKEY3,:NEWKEY4,:NEWKEY5,:NEWKEY6,:NEWKEY7,:NEWKEY8,:NEWKEY9,:NEWKEY10,:NEWKEY11,:NEWKEY12,:NEWKEY13,:NEWKEY14,:NEWKEY15);
ELSE
IF :NEWRECNAME IS NULL
THEN
INSERT INTO PSAUDITWRK
VALUES (GET_PS_OPRID(V_AUDIT_OPRID),SYSDATE,'D',:OLD.RECNAME,:OLD.FIELDNAME,:OLD.OLDVALUE,:OLD.NEWVALUE,:OLD.KEY1,:OLD.KEY2,:OLD.KEY3,:OLD.KEY4,:OLD.KEY5,:OLD.KEY6,:OLD.KEY7,:OLD.KEY8,:OLD.KEY9,:OLD.KEY10,:OLD.KEY11,:OLD.KEY12,:OLD.KEY13,:OLD.KEY14,:OLD.KEY15);
ELSE
INSERT INTO PSAUDITWRK
VALUES (GET_PS_OPRID(V_AUDIT_OPRID),SYSDATE,'B',:OLD.RECNAME,:OLD.FIELDNAME,:OLD.OLDVALUE,:OLD.NEWVALUE,:OLD.KEY1,:OLD.KEY2,:OLD.KEY3,:OLD.KEY4,:OLD.KEY5,:OLD.KEY6,:OLD.KEY7,:OLD.KEY8,:OLD.KEY9,:OLD.KEY10,:OLD.KEY11,:OLD.KEY12,:OLD.KEY13,:OLD.KEY14,:OLD.KEY15);
INSERT INTO PSAUDIT
VALUES (GET_PS_OPRID(V_AUDIT_OPRID),SYSDATE,'A',:NEWRECNAME,:NEWFIELDNAME,:NEWOLDVALUE,:NEWNEWVALUE,:NEWKEY1,:NEWKEY2,:NEWKEY3,:NEWKEY4,:NEWKEY5,:NEWKEY6,:NEWKEY7,:NEWKEY8,:NEWKEY9,:NEWKEY10,:NEWKEY11,:NEWKEY12,:NEWKEY13,:NEWKEY14,:NEWKEY15);
END IF;
END IF;
END JOB_TR;
Warning: compiled but with compilation errors
LINE/COL ERROR
5/4 PLS-00049: bad bind variable 'OLD.SYSADM'
8/49 PLS-00049: bad bind variable 'NEW.RECNAME'
8/62 PLS-00049: bad bind variable 'NEW.FIELDNAME'
8/77 PLS-00049: bad bind variable 'NEW.OLDVALUE'
8/91 PLS-00049: bad bind variable 'NEW.NEWVALUE'
8/105 PLS-00049: bad bind variable 'NEW.KEY1'
8/115 PLS-00049: bad bind variable 'NEW.KEY2'
8/125 PLS-00049: bad bind variable 'NEW.KEY3'
8/135 PLS-00049: bad bind variable 'NEW.KEY4'
8/145 PLS-00049: bad bind variable 'NEW.KEY5'
8/155 PLS-00049: bad bind variable 'NEW.KEY6'
LINE/COL ERROR
8/165 PLS-00049: bad bind variable 'NEW.KEY7'
8/175 PLS-00049: bad bind variable 'NEW.KEY8'
8/185 PLS-00049: bad bind variable 'NEW.KEY9'
8/195 PLS-00049: bad bind variable 'NEW.KEY10'
8/206 PLS-00049: bad bind variable 'NEW.KEY11'
8/217 PLS-00049: bad bind variable 'NEW.KEY12'
8/228 PLS-00049: bad bind variable 'NEW.KEY13'
8/239 PLS-00049: bad bind variable 'NEW.KEY14'
8/250 PLS-00049: bad bind variable 'NEW.KEY15'Hi,
Your trigger still don't have any reference to OLD.SYSADM, meaning those compile errors are from something else.
You should
1. Format your trigger (Which you have to some degree)
2. Paste it into SQL*Plus
3. Followed it by alter trigger ... compile
4. And show errors.
5. Paste back everything here
6. Remember to enclose SQL*Plus output in {noformat}{noformat} tags
Regards
Peter
edit:
I take back what I said about formatting. This is how it looks formatted:create or replace trigger job_tr
after insert or update or delete
on ps_job_bt
referencing new as new old as old
for each row
declare
v_audit_oprid varchar2(64);
begin
dbms_application_info.read_client_info(v_audit_oprid);
if :old.recname is null
then
insert into psauditwrk
values (get_ps_oprid(v_audit_oprid)
,sysdate
,'I'
,:newrecname
,:newfieldname
,:newoldvalue
,:newnewvalue
,:newkey1
,:newkey2
,:newkey3
,:newkey4
,:newkey5
,:newkey6
,:newkey7
,:newkey8
,:newkey9
,:newkey10
,:newkey11
,:newkey12
,:newkey13
,:newkey14
,:newkey15);
else
if :newrecname is null
then
insert into psauditwrk
values (get_ps_oprid(v_audit_oprid)
,sysdate
,'D'
,:old.recname
,:old.fieldname
,:old.oldvalue
,:old.newvalue
,:old.key1
,:old.key2
,:old.key3
,:old.key4
,:old.key5
,:old.key6
,:old.key7
,:old.key8
,:old.key9
,:old.key10
,:old.key11
,:old.key12
,:old.key13
,:old.key14
,:old.key15);
else
insert into psauditwrk
values (get_ps_oprid(v_audit_oprid)
,sysdate
,'B'
,:old.recname
,:old.fieldname
,:old.oldvalue
,:old.newvalue
,:old.key1
,:old.key2
,:old.key3
,:old.key4
,:old.key5
,:old.key6
,:old.key7
,:old.key8
,:old.key9
,:old.key10
,:old.key11
,:old.key12
,:old.key13
,:old.key14
,:old.key15);
insert into psaudit
values (get_ps_oprid(v_audit_oprid)
,sysdate
,'A'
,:newrecname
,:newfieldname
,:newoldvalue
,:newnewvalue
,:newkey1
,:newkey2
,:newkey3
,:newkey4
,:newkey5
,:newkey6
,:newkey7
,:newkey8
,:newkey9
,:newkey10
,:newkey11
,:newkey12
,:newkey13
,:newkey14
,:newkey15);
end if;
end if;
end job_tr;
It is immediately seen that this
if :newrecname is null
Should be
if :new.recname is null
And this error isn't even shown in your eledged compile errors.
Edited by: Peter Gjelstrup on Feb 10, 2009 7:00 AM -
1. create table t1
(t1ID int,
t1nam varchar2(33)
2. create or replace view t1t2t3
t1id, t1name, t2id, t2nam, t2cty, t2st, aid, aname, bid, bname, t3id, t3nam
as
select * from t1, t2, t1 a, t1 b, t3
where t1.t1ID = t2.id(+)
and T2.CTY = a.t1ID(+)
and t2.sty = b.t1ID(+)
and t1.t1ID = t3.t3id(+)
3. CREATE OR REPLACE TRIGGER t1t2t3
INSTEAD OF INSERT or update
ON t1t2t3
BEGIN
insert into t1
values(:new.t1ID, :new.t1nam);
END t1t2t3;
Get error:
[Error] PLS-00049 (6: 19): PLS-00049: bad bind variable 'NEW.T1NAM'
Pls advise. I am using Toad.
Thanks.tnam1 not belongs to t1t2t3.
:new should be used to te columns of the table on which you are writing the trigger.
Here i think t1t2t3 has t1name field you have to use :new.t1name instead of :new.t1nam(which belongs to table t1)
Maybe you are looking for
-
Empty Document Found: Problem due to FCC
My scenario relates to a Sender File Adapter and a Receiver IDoc Adapter. My Outbound Message Type / Data Type has multiple Complex elements which I later replicated to only three(3) Complex elements to simplify checking the issue. The elements defi
-
I have an iPhone 5. I also have a 2007 Mercedes E350. I have a Viseeo Bluetooth device which pairs with my phone for calls only (it is instead of the MB brand Bluetooth device that does the exact same thing). For my dock I have an iPhone 5 style p
-
User being able to download filled out form in pdf format
Hello, I'm testing the formscentral application and was wondering if the users are able to obtain a copy of the filled out form in pdf format versus just plain text in the email? Thanks
-
Apple TV and Dissapearing Sync Option
First off - I love my ATV. Now... I can not get my computer to Sync with the 40G ATV. There is not an option in the tabs while it is streaming to the MacBook Pro. As a matter of fact, Streaming is the only thing it will do. When I go to Settings and
-
Can I change the icon colours in iOS7?
I've made the mistake of 'upgrading' to iOS7 on my iPhone 5, and there doesn't seem to be a way of going back to iOS6. So, can anyone tell me if there's a way to chnage the colours of the icons? I thing they are hideously bright and tacky. Thank you