Read ROWID from trigger
Hi expert,
I'm trying to working with a trigger.
I want get the ROWID of the record after the commit
desc tmp_table
Name Null Type
TMPID NOT NULL VARCHAR2(10)
FIRST_DAY DATE
LAST_DAY DATE
NOTE VARCHAR2(255)
CREATE OR REPLACE TRIGGER trigger_test
BEFORE UPDATE OF FIRST_DAY ON TMP_TABLE
declare
v_tmpid tmp_table.tmpid%type;
BEGIN
insert into tmp_table values ('111',sysdate,sysdate,'1111');
dbms_output.put_line ('HOW I GET THE ROWID OF THE RECORD UPDATED?');
commit;
END;
/the trigger work fine if I update the column first_day, but I don't know how i can get the rowid of this record.
cheers,
Lain
"Printing" the rowid doesn't have much value.
If you want to see what it actually means, use the dbms_rowid package to format it.
SQL> declare
2 l_rowid rowid;
3 l_rowid_type number;
4 l_object_number number;
5 l_relative_fno number;
6 l_block_number number;
7 l_row_number number;
8 begin
9 select rowid
10 into l_rowid
11 from t
12 where rownum = 1;
13
14 DBMS_ROWID.ROWID_INFO (rowid_in => l_rowid,
15 rowid_type => l_rowid_type,
16 object_number => l_object_number,
17 relative_fno => l_relative_fno,
18 block_number => l_block_number,
19 row_number => l_row_number);
20
21 dbms_output.put_line('rowid_type = ' || l_rowid_type);
22 dbms_output.put_line('object_number = ' || l_object_number);
23 dbms_output.put_line('relative_fno = ' || l_relative_fno);
24 dbms_output.put_line('block_number = ' || l_block_number);
25 dbms_output.put_line('row_number = ' || l_row_number);
26 end;
27 /
rowid_type = 1
object_number = 1473364
relative_fno = 42
block_number = 47334
row_number = 0
Similar Messages
-
ORA-01445 : cannot select rowid from a join view without a key preserved ta
Hi,
I am using Designer6i for generatin forms:
my blokc is based on a view...
when executing the module, I have the following error when trying to change a value of an item :
FRM 40501: unabe to reserve record for update or delete ,
the display error say :
ORA-01445 : cannot select rowid from a join view without a key preserved table!!!!!
Any help please ???you either create an INSTEAD OF trigger for that view or use on-lock trigger on that block to edit, e.g., SELECT ...INTO...FROM...WHERE...FOR UPDATE NOWAIT.
-
Hi,
I have two tables
CUSTOMERS
===========
Name Null Type
======================
CUST_UID NOT NULL NUMBER(4)
CUST_NAME VARCHAR2(50)
ITEM_PRICES
===========
Name Null Type
======================
IP_UID NOT NULL NUMBER(4)
IP_ITEM_DESC VARCHAR2(50
IP_COST_PRICE NUMBER(6,2)
IP_SELL_PRICE NUMBER(6,2)
I have a view IPS_VW which is the cartician product of CUSTOMERS and ITEM_PRICES, and an instead of trigger for UPDATE on this view which either inserts or updates data in the following third table
ITEM_PRICES_SPECIAL
===========
Name Null Type
======================
IPS_UID NOT NULL NUMBER(4)
CUST_UID NUMBER(4)
IP_UID NUMBER(4)
IPS_SELL_PRICE NUMBER(6,2)
The following is my view
SELECT 'A'||ROWNUM AS "IPSVW_UID",
0 AS "IPSVW_IPS_UID",
"CUSTOMERS"."CUST_UID" AS "IPSVW_CUST_UID",
"ITEM_PRICES"."IP_UID" AS "IPSVW_IP_UID",
"ITEM_PRICES"."IP_SELL_PRICE" AS "IPSVW_IPS_SELL_PRICE"
FROM "CUSTOMERS" "CUSTOMERS",
"ITEM_PRICES" "ITEM_PRICES"
WHERE NOT EXISTS
(SELECT 1
FROM "ITEM_PRICES_SPECIAL" "ITEM_PRICES_SPECIAL"
WHERE "ITEM_PRICES_SPECIAL"."IP_UID" ="ITEM_PRICES"."IP_UID"
AND "ITEM_PRICES_SPECIAL"."CUST_UID" ="CUSTOMERS"."CUST_UID"
UNION
SELECT 'B' ||ROWNUM AS "IPSVW_UID",
"ITEM_PRICES_SPECIAL"."IPS_UID" AS "IPSVW_IPS_UID",
"ITEM_PRICES_SPECIAL"."CUST_UID" AS "IPSVW_CUST_UID",
"ITEM_PRICES_SPECIAL"."IP_UID" AS "IPSVW_IP_UID",
"ITEM_PRICES_SPECIAL"."IPS_SELL_PRICE" AS "IPSVW_IPS_SELL_PRICE"
FROM "ITEM_PRICES_SPECIAL" "ITEM_PRICES_SPECIAL";
And this is the instead of trigger
CREATE OR REPLACE TRIGGER "TRG_IPSVW_UPDATE" INSTEAD OF
UPDATE ON IPS_VW REFERENCING NEW AS N FOR EACH ROW
BEGIN
IF :N.IPSVW_IPS_UID = 0 THEN
INSERT INTO ITEM_PRICES_SPECIAL
( CUST_UID, IP_UID,IPS_SELL_PRICE )
VALUES
( :N.IPSVW_CUST_UID,:N.IPSVW_IP_UID, :N.IPSVW_IPS_SELL_PRICE );
ELSE
UPDATE ITEM_PRICES_SPECIAL
SET IPS_SELL_PRICE = :N.IPSVW_IPS_SELL_PRICE
WHERE IPS_UID = :N.IPSVW_IPS_UID;
END IF;
END;
Everything works fine in SQLPLUS, if i update a rate in this view, a record is either inserted or updated in the third table.
But when i try to create a tabular form based on this view, i get the error
ORA-01446: cannot select ROWID from, or sample, a view with DISTINCT, GROUP BY, etc.
Could someone help me please?
Thanks,
AllenI think The tabular form needs to be able to identify some primary key and using a rownum concatenation cannot provide that.
Cheers
Kofi -
What causes "ORA-01445: cannot select ROWID from" error
While executing a SELECT query i got this error:
ORA-01445: cannot select ROWID from, or sample, a join view without a
key-preserved table
Below mentioned is the join condition part of the query. The line which the error has occured is italicized
from checkout_hdtl ch
inner join pmt_htl ph on ph.post_ln_a = ch.post_ln_code
inner join pin_dls pd on pd.post_ln_a = ph.post_ln_code
inner join carton_dtl cd on cd.carton_nbr = ch.carton_nbr
and cd.lseq_nbr = pd.lseq_nbr
inner join invoice_module im on cd.invevt_code = im.inv_code
inner join item_dock_master del on nm.invent_code = iwm.inv_code
left outer join inv_curr_comm_code mnb on ium.invent_code = im.inv_code
and icc.cntry = ph.shipto_cntry
left outer join vw_ver_master vw on vw.del_rec = ch.del_rec
left outer join cmd code_entry on code_pi.cntry =
cd.code_entry where ch.shpmt_nbr = '3'
What do i do?I would rather use Notepad than store my data in SQL server. It just so happens that our product is released for SQL Server as well. Hence i did the testing.
>Is there a limit to the number of joins that can be performed in Oracle?
Wrong question as it does not have anything to do with the number of views.. it has everything to do with the ability to correctly identify the unique row. Re-read the error message details posted by Blu - it explains the error.As you can see from my post, i created a table using the(CTAS) SELECT query from the View vw_ver_master's definition. So the view's result set is now stored in a table and now there are only tables involved in these JOINS.
The query will succeed if i comment out ANY one of these JOINS in this statement. This is so weird.
I -
Reading files from a mapped drive
Hello,
I am trying to pull image files off of a network share in Oracle Forms.
Everytime I do this, I get error FRM-47109 Cannot locate image file..... i
have tried accessing this drive with 2 methods:
1. Button trigger calls with READ_IMAGE_FILE(:datablock.imagelocation ||
:datablock.filename || '.tif', 'ANY', BLOCK7.IMAGE_ITEM);
2. Button trigger calls with READ_IMAGE_FILE('\\server\images\'
||:CRASH_IMAGES.folder || '\' || :crash_images.docno ||'.tif',
'ANY', 'BLOCK7.IMAGE_ITEM');
Both of these calls work on the development side where the T:\ drive is mapped.
When the form is put on the production server with the same T:\ drive mapping,
the image is unable to be located.
I have also found Microsoft article Q122702, which explains how network shares
are distributed to services. I have edited the registry key
RestrictNullSessAccess to a value of 0, and remapped the drive using: NET USE
T: \\server\images /user:Administrator password.
None of this has worked for me so far, and I have been informed of possible
issues with forms and mapped network drives. Has anyone seen this before or know of a fix?
Thanks,
JordanI'm not too familiar with Windows user accounts.
I'm having this problem of not being able to read files from a mapped drive.
Using 10.1.2 Forms Service on a XP machine.
How do i check to see which user is running the forms service and/or how do I change the settings a user has access to?
Check in server-info and User/Group: #-1(1)/1, what the heck??
Thanks. -
Define variable in package access from trigger
i want to accessing a variable that is defined in the package from trigger..how i must define this variable in the package ?
To add one more point to Justin,
Package variables are global variables. If you want to make it local to single call use PRAGMA SERIALLY_REUSABLE.
create or replace package pkg_variable
as
g_var number := 1;
end;
create or replace package pkg_variable_local
IS
PRAGMA SERIALLY_REUSABLE;
g_var number := 1;
end;
/ Testing Above Two pakcages
set serveroutput on
begin
dbms_output.put_line ( 'Test 1 :');
dbms_output.put_line ( 'Global Var: ' || pkg_variable.g_var);
dbms_output.put_line ( 'Local Var: ' || pkg_variable_local.g_var);
end;
Result:
Test 1:
Global Var : 1
Local Var : 1
begin
pkg_variable_local.g_var := 10;
dbms_output.put_line ( 'Test 2 :');
dbms_output.put_line ( 'Global Var: ' || pkg_variable.g_var);
dbms_output.put_line ( 'Local Var: ' || pkg_variable_local.g_var);
end;
Result:
Test 2:
Global Var : 10
Local Var : 10
begin
dbms_output.put_line ( 'Test 3 :');
dbms_output.put_line ( 'Global Var: ' || pkg_variable.g_var);
dbms_output.put_line ( 'Local Var: ' || pkg_variable_local.g_var);
end;
Result:
Test 3:
Global Var : 10
Local Var : 1
But remember, Serially reusable packages cannot be accessed from database triggers. -
ORA-01445: cannot select ROWID from, or sample, a join view without a key-p
Hi All,
I am facing issue with one sql query. It is giving me error:
ORA-01445: cannot select ROWID from, or sample, a join view without a key-preserved table
I am not getting any clue to solve this. On internet, i didn't find proper reason for this error and troubleshooting way and solution for this error. Everywhere i saw one sentence, "Key preserved means the row from the base table will appear AT MOST ONCE in the output view on that table" but it didn't solve my problem.
I have 1099 columns in one select query. so avoiding the actual column list in select clause. Instead I am trying to select ROWIDs from all tables in join. My understanding is ROWID is a unique identifier in table not in database. But though I remove ROWIDs, I get same error. So please don't bother about these ROWIDs.
SELECT
TO_DATE(FACT.BUS_DATE_FKID,'YYYYMMDD')
,FACT.ROWID AS ABC1
,FACT_ADJ.ROWID AS ABC2
,DIM_SEC.ROWID AS ABC3
,DIM_SEC_ADJ.ROWID AS ABC4
,DIS_CAT.ROWID AS ABC5
,CTRY.ROWID AS ABC6
,BCP.ROWID AS ABC7
,STAGE.ROWID AS ABC8
FROM FACT_POSITION FACT
LEFT JOIN FACT_POSITION_ADJ FACT_ADJ ON FACT.POSITION_PKID = FACT_ADJ.POSITION_FKID
LEFT JOIN DIM_SOURCE_SYSTEM SOURCE ON FACT.SOURCE_SYSTEM_FKID = SOURCE.SOURCE_SYSTEM_PKID
LEFT JOIN DIM_SECURITY DIM_SEC ON FACT.SUBSYS_SECURITY_FKID = DIM_SEC.SECURITY_PKID
LEFT JOIN DIM_SECURITY_ADJ DIM_SEC_ADJ ON FACT.SUBSYS_SECURITY_FKID = DIM_SEC_ADJ.SECURITY_PKID
LEFT JOIN DIM_DISCLOSURE_CATEGORY DIS_CAT ON FACT.DISCLOSURE_CATEGORY_FKID = DIS_CAT.DISCLOSURE_CATEGORY_PKID
LEFT JOIN COUNTRY_REFERENCE CTRY ON CTRY.DESCRIPTION = DIM_SEC.ISSUER_COUNTRY
LEFT JOIN BUSINESS_CLOSE_PERIOD BCP
ON BCP.BUSINESS_CLOSE_DATE = ADD_MONTHS(TRUNC(TO_DATE(FACT.BUS_DATE_FKID,'YYYYMMDD'),'MM'), 1) -1
AND BCP.IS_LOCKED='Y' AND BCP.IS_ACTIVE='Y'
LEFT JOIN GUI_STAGING STAGE ON
FACT.POSITION_PKID=STAGE.POSITION_PKID
AND STAGE.IS_ACTIVE='Y'
AND STAGE.STATUS_ID IN(12,8,1,2,3,4,5)
WHERE FACT.POSITION_PKID=64524374;
While trying to sort this error, I found interesting things that made me more confused.
if I remove TO_DATE function from select clause, same join query works.
If I remove any table from join and keep TO_DATE function in select clause, query works.
That tells, there is no problem in query.
Then please anyone help me to sort out the error. FYI. I have googled a lot for this error. but didn't get solution/clue. That is why I am posting this problem to forum.
Thanks in advance. waiting for reply ASAP.
Pravin Pujari
[email protected]I think i got the solution. The syntax i was using (ANSI syntax) doesn't work in the oracle database version i am using.
When i updated my query with older oracle syntax, it worked.
SELECT
TO_DATE(FACT.BUS_DATE_FKID,'YYYYMMDD')
,FACT.ROWID AS ABC1
,FACT_ADJ.ROWID AS ABC2
,SOURCE.ROWID AS ABC3
,DIM_SEC.ROWID AS ABC4
,DIM_SEC_ADJ.ROWID AS ABC5
,DIS_CAT.ROWID AS ABC6
,CTRY.ROWID AS ABC7
,BCP.ROWID AS ABC8
,STAGE.ROWID AS ABC8
FROM [email protected] FACT
,[email protected] FACT_ADJ
,[email protected] SOURCE
,[email protected] DIM_SEC
, [email protected] DIM_SEC_ADJ
, [email protected] DIS_CAT
, GUI.COUNTRY_REFERENCE CTRY
, GUI.BUSINESS_CLOSE_PERIOD BCP
, GUI.GUI_STAGING STAGE
WHERE FACT.POSITION_PKID=64517140
AND FACT_ADJ.POSITION_FKID(+) = FACT.POSITION_PKID
AND SOURCE.SOURCE_SYSTEM_PKID=FACT.SOURCE_SYSTEM_FKID
AND DIM_SEC.SECURITY_PKID=FACT.SUBSYS_SECURITY_FKID
AND DIM_SEC_ADJ.SECURITY_PKID(+)=DIM_SEC.SECURITY_PKID
AND FACT.DISCLOSURE_CATEGORY_FKID = DIS_CAT.DISCLOSURE_CATEGORY_PKID
AND CTRY.DESCRIPTION = DIM_SEC.ISSUER_COUNTRY
AND BCP.BUSINESS_CLOSE_DATE = ADD_MONTHS(TRUNC(TO_DATE(FACT.BUS_DATE_FKID,'YYYYMMDD'),'MM'), 1) -1
AND BCP.IS_ACTIVE='Y'
AND FACT.POSITION_PKID=STAGE.POSITION_PKID
AND STAGE.IS_ACTIVE='Y'
AND STAGE.STATUS_ID IN(12,8,1,2,3,4,5); -
Reading Data from serial (Comm) Port in developer200 forms 6i
Dears,
I have developed an application using Dev2k forms 6i.
I need to read data from a device (weigh bridge) that is attached to PC on comm port.
scenario: when a vehicle comes on the Weigh bridge it calculates its weight and send it to the PC on serial port.
on when-button-pressed event I want to get data into a text field on form.
If any one has developed such form please help me.
Thanks and regardsyou can:
create java class -> wrap plsql -> invoke plsql-code from button trigger
googling java class instead of creating =) -
APP-FND-01242: Cannot read value from field Error in Forms
Hi,
I have a form which is having a navigation
Setup -> Codes,
as soon as the Code page has open, am pressing Cntrl + F11, and am getting the
below error.
APP-FND-01242: Cannot read value from field COMBO.ENABLED_FLAG
Cause: The field COMBO.ENABLED_FLAG could not be located or read.
Action: This error is normally the result of an incorrectly-entered field name string in a trigger, or a field name string that does not uniquely specify a field in your form. Correct your trigger logic to precisely specify a valid field.
when am clicking on the button 'Ok' am getting a value one by one.
am a newbie to forms, please let me know how to solve this error in details
steps that helps meAsk your question in an eBusiness-suite related forum, maybe here OA Framework
-
Hello Gurus,
I'm inserting rows into mtl_transaction_interface table and calling mtl_online_transaction_pub.process_online to process it from a TRIGGER on mtl_material_transactions table.
But it doesn't process the data and errors with process_flag 3.
If I comment the call to mtl_online_transaction_pub.process_online and just insert into interface table and then call mtl_online_transaction_pub.process_online from independent PLSQL block it works fine.
Can someone suggest a solution for the problem, I think the issue is in the design.
Thanks
ManuHi,
I hope you are using an 'after insert' trigger on mtl_transactions_interface.
Ensure that the MTI record is populated with transaction_header_id with transaction_mode = 1 (Online), process_flag = 1 and lock_flag = 2.
Call the txn processor with transaction_header_id, and it should work.
If transaction_mode is 2 (immediate) or 3 (Background) then the MTI record must be commited in database; calling txn processor from trigger cannot see the record as it is not committed.
If it doesn't work, then you will have to retrieve errors from the return message to understand the problem in detail.
I would strongly recommend not to use trigger for such processing.
I believe, you have a custom package/procedure from which you are inserting data into MTI.
once the insert is done, then you can call the same API from custom code.
Also check how exactly is MTI is getting inserted, is apps context set correctly (either by means of concurrent program, or by explicitly calling fnd_global.apps_initialize(..) )
If it still doesnt work, enable Inventory Debug by setting up profiles INV%DEBUG%, and see the log messages. (e.g. set the log file as /usr/tmp/mti.log )
Hope it helps, -
Cannot select ROWID from, or sample, a join view without a key-preserve
I'm getting an error "cannot select ROWID from, or sample, a join view without a key-preserved table" when performing an INSERT. There is no error when performing an UPDATE.
I created a "Form with Reports" page, where the Reports is based on a view multi table join. The primary key I chose during the form creation process is "From Trigger". The primary key "ACCESS_ID" has been defined in the base table. On the view, I have created an INSTEAD OF TRIGGER, for both Insert and Update. The update seems to work. I am using the automatic row processing for the update and insert.
Additional information: My insert works standalone i.e. i write
insert into jxjplntr_access_v (col1, ...)
values (va1, val2...)
and it works when i run it on SQL window.
access_id has a constraint defined as not null and also PK.
I have an insert "instead of" trigger defined on the jxjplntr_access_v view.
However, when i "CREATE" a record after filling in the values, I get the above error. BTW, here is the view definition:
CREATE OR REPLACE VIEW jxjplntr_access_v (
access_id,
person_id,
person_name,
badge_number,
ntr_resp_type,
primary_flag,
start_date_active,
end_date_active,
created_by,
created_by_uname,
creation_date,
last_updated_by,
last_updated_by_uname,
last_update_date,
last_update_login )
AS
select
access_id,
ja.person_id,
initcap(p.last_name||', '||p.first_name) person_name,
p.employee_number badge_number,
ntr_resp_type,
primary_flag,
ja.start_date_active,
ja.end_date_active,
ja.created_by,
f1.user_name created_by_uname,
ja.creation_date,
ja.last_updated_by,
f2.user_name last_updated_by_uname,
ja.last_update_date,
ja.last_update_login
from jplntr.jplntr_access ja
,fnd_user f1
,fnd_user f2
,per_people_x p
where f1.user_id(+) = ja.created_by
and f2.user_id(+) = ja.last_updated_by
and p.person_id(+) = ja.person_id
Thanks in advance.
K
Edited by: kktong on Dec 12, 2011 5:39 PM
Edited by: kktong on Dec 13, 2011 10:06 AMI've just been looking at exactly the same problem. From my initial investigations, this seems to be a bug with Apex and creating a tabular form, as described in this thread here:
v4.0 - Tabular form ORA-01445: cannot select ROWID from, or sample,
Very frustrating!
I hope thats of use to you. If I find out anything else, I'll come back and let you know.
Simon
Edited by: Simon Holt on 26-Jul-2012 03:32 -
" ORA-01445: cannot select ROWID from, or sample, a join view without a key
GREETINGS !
CREATED TABULAR FORM WITH QUERY
WHILE EXECUTE ON SQL COMMANDS ITS EXECUTES AND SHOWS RECORDS, PASTE SAME QUERY ON TABULAR FORM SOURCE . WHEN RUN PAGE IT GIVES ERROR
" ORA-01445: cannot select ROWID from, or sample, a join view without a key-preserved table".
Edited by: Omzz on Oct 3, 2012 10:34 PMWhen setting the tabular form, only use the table that you are trying to update/modify.
After that is working, modify the SQL source with the other tables.
By just pasting an SQL query into the region source, it doesnt know what tables you are trying to update
PS - Please turn off "Caps Lock" :-) -
ORA-01446: cannot select ROWID from, or sample, a view with DISTINCT, GROUP
In my data model (load from a database) there is this data control and its accessor return.
When I drag the accessor return inside a jsf page I create a adf read only table (that has about 5000 rows), the I run the page and it works.
Since I want to display only 20 ( or 50 or 100 is the same) rows for each page I had changed the access mode from the default value "Scrollable" to "Range Paging" and then I ve selected range size 50.
Now if I run hte jsf page there are no data to display and if I press the small triangles to order the column or insert a word in the filter field I have the message ORA-01446: cannot select ROWID from, or sample, a view with DISTINCT, GROUP.
I dont know how to do to solve this problem.
StefanoAn other thing.
I solved this problem, maybe I dont understand the meaning of access mode and range size , since every value I choose of these 2 fields the visualization of the table doesnt change. -
Dears,
i have this problem after i create tabular from depend on view
ORA-01446: cannot select ROWID from, or sample, a view with DISTINCT, GROUP BY, etc.
this a query that i use
select
"INVOICE_DET",
"INVOICE_DET" INVOICE_DET_DISPLAY,
"INVOICE_ID",
"STORAGE_CODE",
"ITEM_QNTY",
"ITEM_PRICE",
"BONS_QNTY",
"DISC_VALUE",
"TOT_VAL",
"LOCATION_CODE",
"BATCH_DET",
"ITEM_CODE",
"ITEM_NAME",
"UOM_CODE",
"UOM_NAME",
"SIZE_CODE",
"SIZE_NAME",
"COLOR_CODE",
"COLOR_NAME",
"STOREG_BRCHAS_BATCHN",
"EXPR_DATE",
"PROD_DATE",
"ITEM_DET_ID"
from "#OWNER#"."BRCHAS_INVOICE_DET_VIEW"
this the view i created
CREATE OR REPLACE FORCE VIEW "RETAIL"."BRCHAS_INVOICE_DET_VIEW" ("INVOICE_DET", "INVOICE_ID", "STORAGE_CODE", "ITEM_QNTY", "ITEM_PRICE", "BONS_QNTY", "DISC_VALUE", "TOT_VAL", "LOCATION_CODE", "BATCH_DET", "ITEM_CODE", "ITEM_NAME", "UOM_CODE", "UOM_NAME", "SIZE_CODE", "SIZE_NAME", "COLOR_CODE", "COLOR_NAME", "STOREG_BRCHAS_BATCHN", "EXPR_DATE", "PROD_DATE", "ITEM_DET_ID") AS
SELECT invoice_det, invoice_id, storage_code, item_qnty, item_price,
bons_qnty, disc_value, tot_val, location_code, batch_det, item_code,
item_name, uom_code, uom_name, size_code, size_name, color_code,
color_name, storeg_brchas_batchn, expr_date, prod_date, item_det_id
FROM (SELECT d.invoice_det, d.invoice_id, d.storage_code, d.item_qnty,
d.item_price, d.bons_qnty, d.disc_value, d.tot_val,
d.location_code, d.batch_det, i.item_code,
get_item_name (i.item_code) item_name, i.uom_code,
get_uom_desc (i.uom_code) uom_name, i.size_code,
get_size_name (i.size_code) size_name, i.color_code,
get_color_name (i.color_code) color_name,
dd.storeg_brchas_batchn, b.expr_date, b.prod_date,
i.item_det_id
FROM brchas_invoice_det d,
brchas_batch dd,
brchas_batch_det b,
item_uom_size_color i
WHERE dd.storeg_brchas_batchinternn = b.storeg_brchas_batchinternn
AND d.batch_det = b.batch_det
AND b.item_det_id = i.item_det_id
AND d.batch_det IS NOT NULL
UNION ALL
SELECT d.invoice_det, d.invoice_id, d.storage_code, d.item_qnty,
d.item_price, d.bons_qnty, d.disc_value, d.tot_val,
d.location_code, d.batch_det, i.item_code,
get_item_name (i.item_code) item_name, i.uom_code,
get_uom_desc (i.uom_code) uom_name, i.size_code,
get_size_name (i.size_code) size_name, i.color_code,
get_color_name (i.color_code) color_name,
NULL storeg_brchas_batchn, NULL expr_date, NULL prod_date,
i.item_det_id
FROM brchas_invoice_det d, item_uom_size_color i
WHERE d.item_det_id = i.item_det_id
AND d.batch_det IS NULL) ;
CREATE OR REPLACE TRIGGER "RETAIL"."BRCHAS_INVOICE_DET_VIEW_TRG"
INSTEAD OF DELETE OR INSERT OR UPDATE
ON RETAIL.BRCHAS_INVOICE_DET_VIEW
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
V_PRICE NUMBER;
V_BONUS_QNTY NUMBER;
V_DISC_VAL NUMBER;
BEGIN
IF INSERTING THEN
INSERT INTO BRCHAS_INVOICE_DET
(INVOICE_DET,
INVOICE_ID ,
STORAGE_CODE,
ITEM_QNTY,
ITEM_PRICE,
BATCH_DET,
BONS_QNTY,
TOT_VAL,
LOCATION_CODE,
DISC_VALUE,
CREATED_USER,
CREATED_DATE,
ITEM_DET_ID
VALUES
("BRCHAS_INVOICE_DET_SEQ".nextval,
:NEW.INVOICE_ID ,
:NEW.STORAGE_CODE,
:NEW.ITEM_QNTY,
:NEW.ITEM_PRICE,
:NEW.BATCH_DET,
:NEW.BONS_QNTY,
(:NEW.ITEM_QNTY * NVL(:NEW.ITEM_PRICE,0)) - NVL(:NEW.DISC_VALUE,0),
:NEW.LOCATION_CODE,
:NEW.DISC_VALUE,
nvl(v('APP_USER'),user),
sysdate,
:NEW.ITEM_DET_ID);
ELSIF UPDATING THEN
UPDATE BRCHAS_INVOICE_DET
SET INVOICE_ID =:NEW.INVOICE_ID,
STORAGE_CODE =:NEW.STORAGE_CODE,
ITEM_QNTY =:NEW.ITEM_QNTY,
ITEM_PRICE = :NEW.ITEM_PRICE,
BATCH_DET =:NEW.BATCH_DET,
BONS_QNTY = :NEW.BONS_QNTY,
TOT_VAL =(:NEW.ITEM_QNTY * NVL(:NEW.ITEM_PRICE,0)) - NVL(:NEW.DISC_VALUE,0),
LOCATION_CODE =:NEW.LOCATION_CODE,
DISC_VALUE = :NEW.DISC_VALUE,
ITEM_DET_ID =:NEW.ITEM_DET_ID
WHERE INVOICE_DET =:NEW.INVOICE_DET;
ELSE
DELETE FROM BRCHAS_INVOICE_DET
WHERE INVOICE_DET =:OLD.INVOICE_DET;
END IF;
EXCEPTION
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END BRCHAS_INVOICE_DET_VIEW_TRG;
ALTER TRIGGER "RETAIL"."BRCHAS_INVOICE_DET_VIEW_TRG" ENABLE;
please i need help
Thanks
AhmedHi,
This might help
http://www.techonthenet.com/oracle/errors/ora01446.php
Regards,
Jari -
ORA-01446: cannot select ROWID from view with DISTINCT, GROUP BY, etc.
Hi,
I have created view by joining two tables...And it is like this...
Create view Test_Data as
Select t.column1, t.column2, t.rowid from table1 t
union s.column1,s.column2, s.rowid from table2 s
with read only...
Now I executed the following stmt...
Select * from Test_Data where rowid = objid_ where I am passing the objid_ value...But it gave me the above error...can not I run this select stmt using the rowid ?
Any input is highly appreciated...
Thanks And Best Regards,
/Dinesh...
Hi All Again,
I created the view in the following way...Just to check...
CREATE VIEW my_view AS
SELECT t.col1 col1,
t.col2 col2,
t.rowid objid
FROM table1 t
WHERE rownum < 400
UNION
SELECT q.col1 col1,
q.col2 col2,
q.rowid objid
FROM table2 q
WITH read only;
Then I executed the following stmt...
Select * from my_view where rowid = objid_
Then I did not get that Oracle Error ORA-01446, Does anybody have any clue regarding this matter, i.e. how the use of rownum solve this prob...
Thanks And Best Regards,
/Dinesh...
Edited by: user521478 on Aug 9, 2010 4:46 PMCheck this:
SQL> create view my_view as select rowid rd from dual;
View created.
SQL> select * from my_view;
RD
AAAACsAABAAAAGiAAA
SQL> select * from my_view where rd = 'AAAACsAABAAAAGiAAA';
RD
AAAACsAABAAAAGiAAA
SQL> So your create view statement should be:
Create view Test_Data as
Select t.column1, t.column2, t.rowid rd from table1 t
union s.column1,s.column2, s.rowid from table2 s
with read onlyThen try:
Select * from Test_Data where rd = objid;Edited by: AP on Jul 28, 2010 2:19 AM
Maybe you are looking for
-
I am looking for a way to essentially import a select group of values from one table into another. If, for instance, I have a list of names in Column A and a list of colors in Column B, I would like to be able to compile a list of the names which coi
-
Ipod Touch not showing up it windows 7 or itunes
My Ipod Touch is not showing up in windows or itunes or even the ipod touch if you cloud help thank you so much Thank you so mcuh
-
Apply 1 color palette to 40 AI files, at once...?
I have built 40 charts, using PMS colors. Now I have to convert all these charts to CMYK. I have a color pallete saved, as a separate doc., and I can pull it in through the library. Is there a way to do this swatch change globally? Swatches names sta
-
With reference to Gigaworks Progamer G500 5.1
I have recently purchased Creative Gigaworks Progamer G500 5.1 speakers and wish to query the apparent overheating subunit fuse which in a small proportion of cases appears to present reason for concern. I plan to invest in a heavy duty 2700 Joule su
-
Also, if there is text that is continued, the SEE MORE links do not work now. If I go to Internet Explorer there is no problem at all.